Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - AnsiString mit Längenangabe


Martok - Do 04.11.10 13:36
Titel: AnsiString mit Längenangabe
Hi!

Ich möchte folgendes deklarieren:

Delphi-Quelltext
1:
TAttributeName = String[50];                    

Um Unicode-Gewappnet zu sein, müsste man doch dann aber eigentlich AnsiString[50] schreiben. Das geht aber nicht, den Längenbezeichner will Delphi 7 nur nach string sehen.
Sind ShortStrings (die das dann ja werden) vielleicht immer SingleByte (dann wäre aber die Nomenklatur seltsam)? Oder muss man da mit einer Versionsunterscheidung arbeiten, um das nur auf Compilern zu tun, die damit rechnen?

Hab leider kein neueres Delphi zur Verfügung, um das mal zu testen...

Grüße,
Sebastian


Gausi - Do 04.11.10 13:47

Ein ShortString ist auch unter Delphi 2009 nur Ansi, einen Unicode-ShortString gibt es afaik nicht. An der Stelle gibt es also keine Probleme mit älteren/neueren Delphi-Versionen.


bummi - Do 04.11.10 13:47

Ein ShortString hat eine Länge von 0 bis 255 Zeichen. Obwohl sich seine Länge dynamisch ändern kann, beträgt die statische Speicherplatzzuweisung immer 256 Bytes


Martok - Do 04.11.10 13:51

Ich liebe dieses Forum ;)

Danke euch beiden.

Ist also doch etwas ungünstig benannt der Typ, wenn doch mittlerweile String nicht mehr String ist. Naja. Mir kanns ja egal sein ;)


Gausi - Do 04.11.10 14:03

Die Parameter von AnsiCompareString und ähnlichem sind in den neueren Delphi-Versionen ja auch UnicodeStrings, da geht also eh einiges durcheinander. ;-)