Hallo,
ich möchte einen AnsiString in einen PWideChar konvertieren. Unter Delphi 2007 sah der Code folgendermaßen aus:
Delphi-Quellcode:
function StringToWideChar_CodePage(const Source: AnsiString; Dest: PWideChar;
DestSize: Integer): PWideChar;
begin
Dest[MultiByteToWideChar(CodePageForConversions, 0, PAnsiChar(Source), Length(Source),
Dest, DestSize - 1)] := #0;
Result := Dest;
end;
In der Hilfe von Delphi 2010 habe ich folgenden Hinweis gefunden:
Nach der Änderung zu
Unicode wurde dieser Aufruf zur Unterstützung der Compilierung unter
ANSI und
Unicode geändert:
Delphi-Quellcode:
procedure TWideCharStrList.AddString(
const S:
string);
{$IFNDEF UNICODE}
var
L, D: Integer;
{$ENDIF}
begin
{$IFDEF UNICODE}
FList[FUsed] := StrNew(PWideChar(S));
{$ELSE}
L := Length(S);
D := (L + 1) * SizeOf(WideChar);
FList[FUsed] := AllocMem(D);
MultiByteToWideChar(0, 0, PAnsiChar(S), L, FList[FUsed], D);
{$ENDIF}
Inc(FUsed);
end;
geändert habe ich die alte Version so:
Delphi-Quellcode:
Dest := StrNew(PWideChar(Source));
Dest[DestSize -1] := #0;
Result := Dest;
Der Compiler spuckt die Warnung: W1044 Bedenkliche Typumwandlung von AnsiString in PWideChar aus {Zeile ... StrNew(PWideChar(Source)) }, kann ich diese ignorieren bzw. wie kann man das besser machen ?