![]() |
W1044 Bedenkliche Typumwandlung von AnsiString in PWideChar
Hallo,
ich möchte einen AnsiString in einen PWideChar konvertieren. Unter Delphi 2007 sah der Code folgendermaßen aus:
Delphi-Quellcode:
In der Hilfe von Delphi 2010 habe ich folgenden Hinweis gefunden:
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; Nach der Änderung zu Unicode wurde dieser Aufruf zur Unterstützung der Compilierung unter ANSI und Unicode geändert:
Delphi-Quellcode:
geändert habe ich die alte Version so:
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;
Delphi-Quellcode:
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 ?
Dest := StrNew(PWideChar(Source));
Dest[DestSize -1] := #0; Result := Dest; |
Re: W1044 Bedenkliche Typumwandlung von AnsiString in PWideC
Hi
definiere deine Methode einfach so: AddString(const S: WideString); Gruß Marco |
Re: W1044 Bedenkliche Typumwandlung von AnsiString in PWideC
Man könnte ja nun auch Fragen: Warum keine TStringList?
Delphi-Quellcode:
für Delphi vor D2009 benötigt man aber noch eine StrNew-Funktion für PWideChar,
procedure TWideCharStrList.AddString(const S: string);
begin FList[FUsed] := StrNew(PWideChar(WideString(S))); Inc(FUsed); end; da dort nur eine für PAnsiChar existiert |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:45 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz