Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.312 Beiträge
Delphi 12 Athens
|
AW: WideString zu AnsiString konvertieren
15. Feb 2011, 00:45
Sehr interessant.
jedenfalls hatte ich damals in meinem D7 solche Probleme nicht.
Geht es hiermit?
Delphi-Quellcode:
function UTF16ToCodepage(S: WideString): AnsiString;
var
i: Integer;
begin
if S <> '' then
begin
i := WideCharToMultiByte(CP_ACP, 0, PWideChar(S), Length(S),
nil, 0, nil, nil);
SetLength(Result, i);
WideCharToMultiByte(CP_ACP, 0, PWideChar(S), Length(S),
PAnsiChar(Result), i, nil, nil);
end else
Result := '';
end;
Delphi-Quellcode:
'GStreamer Codec and Totem Movie Player for Linux'#$D#$A
Evaluate von s (String) NACH der Funktion ergibt:
'ÿþG'#0'S'#0't'#0'r'#0'e'#0'a'#0'm'#0'e'#0'r'#0' '#0'C'#0'o'#0'd'#0'e'#0'c'#0' '#0'a'#0'n'#0'd'#0' '#0'T'#0'o'#0't'#0'e'#0'm'#0' '#0'M'#0'o'#0'v'#0'i'#0'e'#0' '#0'P'#0'l'#0'a'#0'y'#0'e'#0'r'#0' '#0'f'#0'o'#0'r'#0' '#0'L'#0'i'#0'n'#0'u'#0'x'#0#$D#0#$A#0#$D#0#$A#0
Ich wußte garnicht daß Delphi bei einer Stringkonvertierung das BOM (FE FF) entfernt, jedenfalls sollte danach am Anfang des Strings ein "?" stehen.
Ein Therapeut entspricht 1024 Gigapeut.
Geändert von himitsu (15. Feb 2011 um 00:51 Uhr)
|
|
Zitat
|