Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Shortstring oder String ?


Hochhaus - So 09.02.14 16:15
Titel: Shortstring oder String ?
Hallo allerseits !

ich habe bei der Übernahme eines Projektes von Delphi 6 PE zu Delphi XE2 Probleme ! An etwa 270 Stellen kommt eine Warnung des Compilers daher, die früher nicht aufgetreten ist:

Code:


Delphi-Quelltext
1:
 P:= Pos('.EXE', S);                    


Warnung:
[DCC Warnung] MAINX.PAS(2192): W1057 Implizite String-Umwandlung von 'ShortString' zu 'string'

Code:


Delphi-Quelltext
1:
  AssignFile(G, S);                    


Warnung:
[DCC Warnung] MAINX.PAS(2196): W1057 Implizite String-Umwandlung von 'AnsiString' zu 'string'

Wie gesagt: Früher kamen diese Meldungen nie - jetzt schon. Was ist der Grund und wie behebe ich die unschönen Warnungen ?

Danke im Voraus !


Hochhaus


WasWeißDennIch - So 09.02.14 18:02

Der Grund ist, dass bis einschl. Delphi 2007 der generische Typ String als AnsiString (1 Byte/Zeichen) definiert war, seit Delphi 2009 aber ein UnicodeString (UTF-16 -> 2 Byte/Zeichen) ist. Dazu gibt es auch einen kleinen Leitfaden von Embarcadero: Anwendungen für Unicode anpassen [http://docwiki.embarcadero.com/RADStudio/XE5/de/Anwendungen_f%C3%BCr_Unicode_anpassen]


Hochhaus - So 09.02.14 18:12

Danke ! Das erklärt einiges !

Hochhaus