Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - CharToOEM, aber Delphi2010-tauglich???
DonManfred - Di 23.03.10 12:49
Titel: CharToOEM, aber Delphi2010-tauglich???
Ich brauche in meinem Programm die folgende Funktion um Texte umzuwandeln, die die über eine fileimport-funktion von David.fx gescannt und per email gesendet wird.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| function dosascii(AText:string):string; const MaxLength = 16384; var PText : PChar; begin PText:=StrAlloc(MaxLength); StrPCopy(PText,AText); {$IFDEF WIN32} CharToOEM(PText,PText); {$ELSE} AnsiToOEM(PText,PText); {$ENDIF} Result:=StrPas(PText); StrDispose(PText); end; |
Ich habe letztens einen Compilierversuch (genaugenommen hunderte :D) mit Delphi2010 unternommen und auch schon Diverse Problemstellen von String auf AnsiString umgestellt, mit Delphi2010 inkompatible Komponenten ausgetauscht usw...
Bei der Funktion hier komme ich jedoch nicht weiter.
Hat jemand eine Routine die das gleiche macht und mit Delphi 2010 kompatibel ist?
PS: Aktuell habe ich wieder Delphi 2006 im einsatz weil mein chef neue funktionen braucht... Aber im laufe des Tages (spätestens morgen) möchte ich wieder zur Umstellung fortschreiten um das Projekt (bzw die Projekte) in Zukunft mit 2010 weiter entwickeln zu können.
Für Hinweise bin ich dankbar und ich hoffe auch, die richtige Sparte hier im forum gefunden zu haben.
->KEIN CROSSPOST VORHANDEN<-
DonManfred - Do 25.03.10 07:52
*push*
FinnO - Do 25.03.10 17:25
anstatt string mal ansistring versuchen
DonManfred - Do 25.03.10 17:48
Habe ich versucht. Die Funktion will da aber scheinbar keinen ansiString. Fehlermeldung würde ich jetzt gerne nennen aber ich bin ja, erneut, wieder bei D2006, da ich für diese Funktion noch keinen Ersatz gefunden habe. Alles andere konnte ich mit aktualisierten Komponenten oder austausch durch Standard-Komponente hinbekommen. Aber diese Umwandlung nach "OEM" bekomme ich nicht aktualisiert.
Aktuell heisst das für mich; mit Delphi 2006 weitermachen bis ich einen Ersatz gefunden habe. :-/
Flamefire - Fr 26.03.10 00:22
Was funktioniert denn nicht?
Schon probiert ansistrings zu verwenden und chartooema() aufzurufen?
ohne fehler kann man den nicht beheben...
für unicode/widechar geht das nicht inplace.
Grüner - Do 06.05.10 13:11
Folgende Funktion verwende ich ab Delphi 2009 (aufgrund einer Typ-Änderung in der CharToOEM). Das sollte auch in Delphi 2010 funktionieren.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| uses Windows,.......
function Uml(AStr: string):string; var ans:ansistring; begin setlength(ans,length(astr)+1); chartooem(pchar(astr),PAnsiChar(ans)); result:=ans end; |
Moderiert von
Narses: Delphi-Tags hinzugefügt
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!