Zitat von
ulrich.b:
Ein Screenshot auf einem System mit deutscher Codepage und einen mit griechischer. Man sieht, dass bei der Umwandlung in den WideString beide Male das selbe Ergebnis rauskommt, obwohl verschiedene Zeichen umgewandelt werden.
Die
VCL/
RTL kann nicht wissen, welche Codepage du verwendet hast!!
Die Funktion GetACP() liefert die default Codepage deiner Windows-Installation.
Wenn die Codepage des TFont-Objekts davon abweicht, musst du die Zeichenkonvertierung selbst vornehmen.
Delphi-Quellcode:
function StringToWideCharEx(const Source: string;SourceCP:integer; Dest: PWideChar;
DestSize: Integer): PWideChar;
begin
Dest[MultiByteToWideChar(SourceCP, 0, PChar(Source), Length(Source),
Dest, DestSize - 1)] := #0;
Result := Dest;
end;
begin
Str := Edit1.Text;
// WStr := Str;
// ungetestet
SetLength(WStr, Length(Str));
StringToWideCharEx(Str, Edit1.Font.Charset, @Wstr[1], Length(Str)*2);