Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Warnung: ...Datenverlust ... String zu AnsiString (https://www.delphipraxis.net/153299-warnung-datenverlust-string-zu-ansistring.html)

olaf 28. Jul 2010 13:16

Delphi-Version: 2009

Warnung: ...Datenverlust ... String zu AnsiString
 
Hallo,

ich bekomme immer folgende Warnung. Habe schon alles mögliche versucht aber bekomme sie nicht weg.

[DCC Warnung] Mainu.pas(4554): W1058 Implizite String-Umwandlung mit potenziellem Datenverlust von 'string' zu 'AnsiString'

es liegt an der letzten Zeile:
Delphi-Quellcode:
pfaddat:=einstell.GetSpecialFolder(CSIDL_COMMON_DOCUMENTS)+'\Bsmtermindat\';
regist.WriteString('Datmain',pfaddat);
dm.basemterm.Location:=pfaddat+'mterm.tdbd'; //Hier entsteht die Warnung
Vielen Dank für eine Lösung, ansonsten schalte ich sie in den Optionen aus.

Olaf

mkinzler 28. Jul 2010 13:32

AW: Warnung: ...Datenverlust ... String zu AnsiString
 
-Welchen Typ gibt GetSpecialFolder() zurück?
-Wie ist pfaddat deklariert?
-Welchen Typ hat basemterm.Location?

himitsu 28. Jul 2010 13:37

AW: Warnung: ...Datenverlust ... String zu AnsiString
 
.Location wird ein AnsiString sein, wärend pfaddat ein String/UnicodeString/WideString sein wird.

Bei Unicode auf Ansi passen ja nicht alle theoretisch vorhandenen (Unicode)Zeichen rein, darum warnt Delphi.

mkinzler 28. Jul 2010 13:38

AW: Warnung: ...Datenverlust ... String zu AnsiString
 
Das vermute ich auch, deshalb meine Nachfrage :zwinker:

himitsu 28. Jul 2010 13:47

AW: Warnung: ...Datenverlust ... String zu AnsiString
 
Muß man da wirklich noch vermuten?
Wissen reicht doch auch. :angel:

hoika 28. Jul 2010 14:45

AW: Warnung: ...Datenverlust ... String zu AnsiString
 
Hallo,

ich würde die Warnung nicht ausschalten,
sondern wie hier durch TypeCast umgehen.


Delphi-Quellcode:
dm.basemterm.Location:= AnsiString(pfaddat+'mterm.tdbd');

Heiko

mkinzler 28. Jul 2010 14:47

AW: Warnung: ...Datenverlust ... String zu AnsiString
 
Was aber theoretisch genauso verlustbelastet sein wird

H4ndy 28. Jul 2010 14:57

AW: Warnung: ...Datenverlust ... String zu AnsiString
 
Zitat:

Zitat von mkinzler (Beitrag 1038133)
Was aber theoretisch genauso verlustbelastet sein wird

Stimmt, aber selbst Embacadero empfielt diese Warnung zu deaktivieren, da es immer vorkommen kann, wenn man Unicode durch eine Codepage nach Ansi bringt, dass Zeichen fehlen können. Einzig UTF8 bringt da Abhilfe, was aber wiederum kein "richtiges" Ansi ist.

olaf 29. Jul 2010 08:15

AW: Warnung: ...Datenverlust ... String zu AnsiString
 
Hallo,

vielen Dank für die Antworten.

Ich habe wie "hoika" vorgeschlagen hat gecastet und diese nervige Warnung war weg.

Olaf

himitsu 29. Jul 2010 08:18

AW: Warnung: ...Datenverlust ... String zu AnsiString
 
Zitat:

Zitat von H4ndy (Beitrag 1038140)
Stimmt, aber selbst Embacadero empfielt diese Warnung zu deaktivieren, da es immer vorkommen kann, wenn man Unicode durch eine Codepage nach Ansi bringt, dass Zeichen fehlen können.

Wenn man geziehlt "selber" veranlaßt, daß eventuell Zeichen wegkommen,
dann kann man das durch einen expliziten Cast erledigen, welcher keine Warnung ausstößt.
Bei einem impliziten Cast warnt Delphi aber, da es ja nicht wissen kann, daß dieses eine gewollte/gedultete Umwandlung ist.

Also global diese Warnung abzuschalten halte ich für einen Fehler, da so "Fehler" unentdeckt bleiben können.


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:38 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