Delphi 2010:
Folgendes konvertiert mir einen (
Unicode)String zu AnsiString:
Delphi-Quellcode:
var
u: UnicodeString;
a: AnsiString;
begin
u := 'abcäöü';
a := AnsiString(u);
Beim AnsiString Cast gehen allerdings z.B. die deutschen Umlaute kaputt, bzw. werden in aou umgewandelt.
Es müsste doch möglich sein, anhand der aktuellen Codepage (GetACP) ein Umlaut aus einem UnicodeString in einen AnsiString zu retten, denke ich mir, nur weiß ich nicht wie. Dieses Schnipsel habe ich getestet, macht aber letztenendes dasselbe wie AnsiString():
Delphi-Quellcode:
function UnicodeStringToAnsiString(const ws: WideString; codePage: Word): AnsiString;
var
l: integer;
begin
if ws = '' then
Result := ''
else
begin
l := WideCharToMultiByte(codePage,
WC_COMPOSITECHECK or WC_DISCARDNS or WC_SEPCHARS or WC_DEFAULTCHAR,
@ws[1], - 1, nil, 0, nil, nil);
SetLength(Result, l - 1);
if l > 1 then
WideCharToMultiByte(codePage,
WC_COMPOSITECHECK or WC_DISCARDNS or WC_SEPCHARS or WC_DEFAULTCHAR,
@ws[1], - 1, @Result[1], l - 1, nil, nil);
end;
end;