Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - D2009 E2010 inkompatible typen: 'AnsiChar' und 'Char'


chubbson - Sa 26.06.10 11:53
Titel: D2009 E2010 inkompatible typen: 'AnsiChar' und 'Char'
Hallo Zusammen
Es is ein weilchen her seit ich mich zuletzt hier blicken lassen hab.

Zu diesem Thema gibt es warscheinlich bereits 100000 Einträge aber ich verstehs trotzdem noch nicht ganz.

Ich wollte bisschen alten code in d2009 laufenlassen und beim builden einer dpk bekomm ich folgende Meldung:


Quelltext
1:
E2010 inkompatible typen: 'AnsiChar' und 'Char'                    


Anscheinend sind nun alle Char in delphi 2009 WideChar und dasselbe mit strings oder so.

Leider bin ich die letzten 5 Monate mit Java konfrontiert worden und mein ganzes delphi Wissen wurde zu brei geschlagen;)
kurz, ich versteh im Moment nur Bahnhof.

zwar hab ich diesen Code, wo der Fehler zum beispiel auftritt:


Delphi-Quelltext
1:
2:
3:
4:
5:
var
  Len : byte;                                 //Stringlänge
  StrB : ShortString;  
begin 
  StrB[0] := Chr(len);


oder


Delphi-Quelltext
1:
2:
3:
4:
var 
  str : string[255];
begin
  str[ix] := Chr(23 xor ord(str[ix]));


Kann mir das jemand versuchen zu erklären wieso jetzt genau das nicht gehen sollte? Was da genau die Lösung wäre und Weshalb.


jaenicke - Sa 26.06.10 22:05

Chr gibt ein Char zurück. In einem ShortString dagegen sind AnsiChars drin, da dieser Stringtyp nicht unicodefähig ist.

Du kannst in diesem Fall einfach auf AnsiChar casten, aber besser ist es den Code gleich ganz umzuschreiben. Und dabei auf ShortStrings zu verzichten. Die habe ich selbst schon ewig nicht mehr verwendet...