AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi W1044 Bedenkliche Typumwandlung von AnsiString in PWideChar
Thema durchsuchen
Ansicht
Themen-Optionen

W1044 Bedenkliche Typumwandlung von AnsiString in PWideChar

Ein Thema von quick · begonnen am 4. Nov 2009 · letzter Beitrag vom 4. Nov 2009
Antwort Antwort
quick

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

W1044 Bedenkliche Typumwandlung von AnsiString in PWideChar

  Alt 4. Nov 2009, 12: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
Benutzerbild von MarcoWarm
MarcoWarm

Registriert seit: 10. Sep 2003
Ort: Großhennersdorf
532 Beiträge
 
Delphi 10.1 Berlin Professional
 
#2

Re: W1044 Bedenkliche Typumwandlung von AnsiString in PWideC

  Alt 4. Nov 2009, 13:07
Hi

definiere deine Methode einfach so: AddString(const S: WideString);

Gruß
Marco
Marco Warm
TUO
TheUnknownOnes.net
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#3

Re: W1044 Bedenkliche Typumwandlung von AnsiString in PWideC

  Alt 4. Nov 2009, 13:15
Man könnte ja nun auch Fragen: Warum keine TStringList?

Delphi-Quellcode:
procedure TWideCharStrList.AddString(const S: string);
begin
  FList[FUsed] := StrNew(PWideChar(WideString(S)));
  Inc(FUsed);
end;
für Delphi vor D2009 benötigt man aber noch eine StrNew-Funktion für PWideChar,
da dort nur eine für PAnsiChar existiert
$2B or not $2B
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:49 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz