Einzelnen Beitrag anzeigen

shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#7

Re: Delphi <= 7 Unicode Conversion Bug

  Alt 10. Apr 2007, 10:25
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);
Andreas
  Mit Zitat antworten Zitat