Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Herausfinden welcher String-Typ verwendet wird (https://www.delphipraxis.net/166906-herausfinden-welcher-string-typ-verwendet-wird.html)

inc7 5. Mär 2012 14:16

Delphi-Version: 5

Herausfinden welcher String-Typ verwendet wird
 
Wie kann ich programmatisch herausfinden, welcher String-Typ (ShortString, AnsiString, WideString, UnicodeString) von einem deklarierten String oder vom System/Compiler verwendet wrid?

Perlsau 5. Mär 2012 14:27

AW: Herausfinden welcher String-Typ verwendet wird
 
Wozu denn das? Schau doch einfach in deinem Code nach, welchen Stringtyp du verwendest ...

himitsu 5. Mär 2012 14:31

AW: Herausfinden welcher String-Typ verwendet wird
 
Man mag es nicht glauben, aber möchte man zwei Typen/Typendeklarationen vergleichen, dann vergleicht man einfach deren Typen-Informationen. :angle2:

Delphi-Quellcode:
if TypeInfo(String) = TypeInfo(AnsiString) then
  IstAnsiString;

if SizeOf(Char) = 1 then
  IstAnsiString;
if SizeOf(Char) = 2 then
  IstUnicodeString;

{$IFDEF UNICODE}
  IstUnicodeString
{$ENDIF}

{$IF CompilerVersion > 19.0}
  IstUnicodeString
{$IFEND}




// das sollte wohl nur in Delphi 1 und vierlleicht auch noch Delphi 2 zutreffen (k.A. wann das umgestellt wurde)
if TypeInfo(String) = TypeInfo(ShortString) then
  IstShortString;
z.B. JEDI und Andere haben auch eine INC-Datei dabei, wo für sowas entsprechende Compilerschalter erstellt werden.

Popov 5. Mär 2012 14:51

AW: Herausfinden welcher String-Typ verwendet wird
 
Zitat:

Zitat von himitsu (Beitrag 1154596)
// das sollte wohl nur in Delphi 1 und vierlleicht auch noch Delphi 2 zutreffen

Soweit ich mich erinnern kann habe ich bei Delphi 2 gelesen, dass Strings nun aut. AnsiString sind, in Delphi 1 waren Strings aut. ShortStrings. Man konnte aber in Delphi 1 das per Compilerschalter umschalten. Ich kann mich deshalb daran erinnern, weil ich in einem D1 Projekt alles als AnsiStrings deklarieren mußte, weil sie länger als 256 Zeichen waren, später den Compilerschalter genutzt habe und in D2 alles wieder entfernt habe und mit normalen Strings arbeiten konnte.

jbg 5. Mär 2012 16:09

AW: Herausfinden welcher String-Typ verwendet wird
 
Zitat:

Zitat von Popov (Beitrag 1154601)
Ich kann mich deshalb daran erinnern, weil ich in einem D1 Projekt alles als AnsiStrings deklarieren mußte

Da musst du aber eine andere Delphi 1 Version gehabt haben. Delphi 1 konnte nur ShortStrings und PChars. Erst mit Delphi 2 wurden AnsiStrings eingeführt.

Popov 5. Mär 2012 16:30

AW: Herausfinden welcher String-Typ verwendet wird
 
Wie auch immer, gelesen habe ich es und in D3 ist String per Voreinstellung Ansistring. In diesem Fall habe ich das Projekt wohl schon mit D2 gemacht, also verschiebt sich die Aussage um eine Version nach oben.

DeddyH 5. Mär 2012 16:42

AW: Herausfinden welcher String-Typ verwendet wird
 
IIRC war aber in Delphi 2 string schon Ansistring. Du musst wohl irgend etwas verwechseln.

himitsu 5. Mär 2012 17:23

AW: Herausfinden welcher String-Typ verwendet wird
 
Ich hätte auch gedacht, daß mit der 16>32-Bit-Umstellung der neue String reingekommen ist.

Popov 5. Mär 2012 18:10

AW: Herausfinden welcher String-Typ verwendet wird
 
Reingekommen schon, nur glaube ich mich zu erinnern, dass String noch ShortString war, man es aber umstellen konnte. Das weiß ich deshalb, weil ich da alles drüber gelesen habe, weil ich es brauchte. Kann aber auch sein, dass ich da versehentlich die VB Hilfe gelesen habe.


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