Einzelnen Beitrag anzeigen

quick

Registriert seit: 4. Nov 2009
1 Beiträge
 
#1

W1044 Bedenkliche Typumwandlung von AnsiString in PWideChar

  Alt 4. Nov 2009, 11:59
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 ?
  Mit Zitat antworten Zitat