Difference between revisions of "Character and string types/de"

From Lazarus wiki
Jump to navigationJump to search
m (Fixed syntax highlighting; deleted category already in page template)
 
(9 intermediate revisions by 2 users not shown)
Line 14: Line 14:
 
==== Referenz ====
 
==== Referenz ====
 
* [[doc:ref/refsu7.html|FPC AnsiChar documentation]]
 
* [[doc:ref/refsu7.html|FPC AnsiChar documentation]]
 +
* [[Char/de|Verwendung Char]]
  
 
== WideChar ==
 
== WideChar ==
Line 25: Line 26:
 
|}
 
|}
  
==== Referenzen ====
+
==== Referenz ====
 
* [[doc:ref/refsu8.html|FPC WideChar documentation]]
 
* [[doc:ref/refsu8.html|FPC WideChar documentation]]
 
* [http://de.wikipedia.org/wiki/UTF-16 Wikipedia UTF-16]
 
* [http://de.wikipedia.org/wiki/UTF-16 Wikipedia UTF-16]
 
* [[doc:rtl/system/unicodechar.html|RTL UnicodeChar documentation]]
 
* [[doc:rtl/system/unicodechar.html|RTL UnicodeChar documentation]]
 +
* [[Widechar/de|Verwendung WideChar]]
  
 
== Array of Char ==
 
== Array of Char ==
Line 34: Line 36:
 
Frühe Pascal-Implementierungen, die vor 1978 in Gebrauch waren, unterstützten keinen Stringtyp (mit Ausnahme von String-Konstanten). Die einzige Möglichkeit zur Speicherung einer Zeichenfolgen in einer Variablen war die Verwendung eines Array of Char. Dieser Ansatz hat viele Nachteile und wird nicht mehr empfohlen. Er wird jedoch immer noch unterstützt, um die Abwärtskompatibilität mit alten Code zu gewährleisten.
 
Frühe Pascal-Implementierungen, die vor 1978 in Gebrauch waren, unterstützten keinen Stringtyp (mit Ausnahme von String-Konstanten). Die einzige Möglichkeit zur Speicherung einer Zeichenfolgen in einer Variablen war die Verwendung eines Array of Char. Dieser Ansatz hat viele Nachteile und wird nicht mehr empfohlen. Er wird jedoch immer noch unterstützt, um die Abwärtskompatibilität mit alten Code zu gewährleisten.
  
<syntaxhighlight>
+
===Statisches Array of Char===
 +
 
 +
<syntaxhighlight lang="pascal">
 
type
 
type
   oldString4 = array[0..4] of char;
+
   TOldString4 = array[0..3] of char;
 +
var
 +
  aOldString4: TOldString4;
 +
begin
 +
  aOldString4[0] := 'a';
 +
  aOldString4[1] := 'b';
 +
  aOldString4[2] := 'c';
 +
  aOldString4[3] := 'd';
 +
end;
 +
</syntaxhighlight> The statische Array of Char hat nun den Inhalt:
 +
 
 +
{| class="wikitable" style="text-align:center; width:100px"
 +
|-
 +
| style="width: 25%;" | a || style="width: 25%;" | b || style="width: 25%;" | c || style="width: 25%;" | d
 +
|}
 +
 
 +
{{Note|Nicht zugewiesene Zeichen können einen beliebigen Inhalt haben, je nachdem, was gerade im Speicher war, als der Speicher für das Array zur Verfügung gestellt wurde.}}
 +
 
 +
===Dynamisches Array of Char===
 +
 
 +
<syntaxhighlight lang="pascal">
 +
var
 +
  aOldString: Array of Char;  
 
begin
 
begin
   oldString4[0] := 'a';
+
   SetLength(aOldString, 5);
   oldString4[1] := 'b';
+
  aOldString[0] := 'a';
   oldString4[2] := 'c';
+
   aOldString[1] := 'b';
   oldString4[3] := 'd';
+
   aOldString[2] := 'c';
 +
   aOldString[3] := 'd';
 
end;
 
end;
</syntaxhighlight> liefert:
+
</syntaxhighlight> Das dynamische Array of Char hat nun den Inhalt:
  
 
{| class="wikitable" style="text-align:center; width:100px"
 
{| class="wikitable" style="text-align:center; width:100px"
Line 50: Line 77:
 
|}
 
|}
  
da in Free Pascal Arrays mit Null-Bytes gefüllt sind.
+
{{Note|Nicht zugewiesene Zeichen in einem dynamischen Array of Char haben den Inhalt #0, da freie Positionen aller dynamischen Arrays zunächst mit 0 initialisiert werden (oder #0 oder NULL, oder...)}}
  
 
== PChar ==
 
== PChar ==
  
A variable of type '''PChar''' is basically a pointer to a '''Char''' type, but allows additional operations. PChars can be used to access C-style null-terminated strings, e.g. in interaction with certain OS libraries or third-party software.
+
Eine Variable vom Typ '''PChar''' ist im Grunde ein Zeiger auf einen [[#AnsiChar|Char]] und ermöglicht so zusätzliche Operationen. PChars können verwendet werden, um auf [http://de.wikipedia.org/wiki/Zeichenkette#Repr.C3.A4sentation_mit_Abschlusszeichen C-Null-terminierte Zeichenfolgen], z. B. in der Interaktion mit bestimmten OS Bibliotheken oder Software von Drittanbietern zugreifen.
  
 
{| class="wikitable" style="text-align:center; width:100px"
 
{| class="wikitable" style="text-align:center; width:100px"
Line 63: Line 90:
 
|}
 
|}
  
==== Reference ====
+
====Referenz====
 
* [http://www.freepascal.org/docs-html/ref/refsu16.html FPC PChar documentation]
 
* [http://www.freepascal.org/docs-html/ref/refsu16.html FPC PChar documentation]
 +
* [[doc:rtl/sysutils/pcharfunctions.html|PChar related functions]]
 +
* [[PChar/de|Verwendung PChar]]
  
 
== PWideChar ==
 
== PWideChar ==
  
A variable of type '''PWideChar''' is a pointer to a [[#WideChar|WideChar]] variable.
+
Eine Variable vom Typ '''PWideChar''' ist ein Zeiger auf eine [[#WideChar|WideChar]] Variable.
  
 
{| class="wikitable" style="text-align:center; width:200px"
 
{| class="wikitable" style="text-align:center; width:200px"
Line 77: Line 106:
 
|}
 
|}
  
==== Reference ====
+
====Referenz====
 
* [[doc:rtl/system/pwidechar.html|RTL PWideChar documentation]]
 
* [[doc:rtl/system/pwidechar.html|RTL PWideChar documentation]]
 +
* [[Pwidechar/de|Verwendung PWideChar]]
  
 
== String ==
 
== String ==
  
The type '''string''' may refer to '''ShortString''' or '''AnsiString''', depending from the {$H} switch. If the switch is off ({$H-}) then any string declaration will define a '''ShortString'''. It size will be 255 chars, if not otherwise specified. If it is on ({$H+}) '''string''' without length specifier will define an '''AnsiString''', otherwise a '''ShortString''' with specified length.
+
Der Typ '''String''' steht für '''[[#ShortString|ShortString]]''' oder '''[[#AnsiString|AnsiString]]''', je nach [http://www.freepascal.org/docs-html/prog/progsu25.html#x32-310001.2.25 Compiler Switch {$H}]. Wenn der Schalter aus ist ({$H-}), wird bei jeder Deklaration eines Strings ein '''ShortString''' definiert. Dieser hat eine Größe von 255 Zeichen, soweit nicht anders angegeben. Wenn mit ({$H+}) ein '''String''' ohne Längenangabe deklariert wird, wird ein '''AnsiString''' erstellt, andernfalls, mit einer angegebenen Länge, ein '''ShortString'''.  
 +
 
 +
====Referenz====
 +
* [[String/de|Verwendung String]]
 +
* [[doc:rtl/sysutils/stringfunctions.html|String functions]]
 +
* [[doc:rtl/strutils/index-5.html|Reference for unit 'strutils': Procedures and functions]]
  
 
== ShortString ==
 
== ShortString ==
  
Short strings have a maximum length of 255 characters with the implicit [[FPC Unicode support#Codepages|codepage]] CP_ACP. The length is stored in the character at index 0.
+
ShortStrings (kurze Zeichenketten) haben eine maximale Länge von 255 Zeichen mit der impliziten [[FPC Unicode Unterstützung #Codepages|codepage]] CP_ACP. Die Länge des ShortStrings wird in das erste (nicht sichtbare) Zeichen (Index 0) gespeichert.
  
 
{| class="wikitable" style="text-align:center; width:100px"
 
{| class="wikitable" style="text-align:center; width:100px"
Line 93: Line 128:
 
|}
 
|}
  
==== Reference ====
+
====Referenz====
 
* [http://www.freepascal.org/docs-html/ref/refsu11.html FPC ShortString documentation]
 
* [http://www.freepascal.org/docs-html/ref/refsu11.html FPC ShortString documentation]
 +
* [[Shortstring/de|Verwendung ShortString]]
  
 
== AnsiString ==
 
== AnsiString ==
  
Ansistrings or UTF8Strings are strings that have no length limit. They are reference counted and are guaranteed to be null terminated. Internally, a variable of type '''AnsiString''' is treated as a pointer: the actual content of the string is stored on the heap, as much memory as needed to store the string content is allocated.
+
Ansistrings oder UTF8Strings sind Zeichenfolgen, die keine Längenbeschränkung haben. Sie sind [http://de.wikipedia.org/wiki/Referenzz%C3%A4hlung Referenz gezählt] und werden mit Null beendet ([http://en.wikipedia.org/wiki/Null-terminated_string null terminated]). Intern wird eine Variable vom Typ '''AnsiString''' als Zeiger behandelt: der eigentliche Inhalt der Zeichenfolge wird auf dem Heap gespeichert, dem, nach Bedarf des Inhalts der Zeichenfolge, entsprechend viel Arbeitsspeicher zugeordnet ist.
  
 
{| class="wikitable" style="text-align:center; width:300px"
 
{| class="wikitable" style="text-align:center; width:300px"
Line 107: Line 143:
 
|}
 
|}
  
==== Reference ====
+
====Referenz====
* [http://www.freepascal.org/docs-html/ref/refsu12.html FPC AnsiString documentation]
+
* [[doc:ref/refsu12.html|FPC AnsiString documentation]]
 +
* [[Ansistring/de|Verwendung AnsiString]]
  
 
== UnicodeString ==
 
== UnicodeString ==
  
Like '''AnsiStrings''', '''UnicodeStrings''' are reference counted, null-terminated arrays, but they are implemented as arrays of '''WideChars''' instead of regular '''Chars'''.
+
Wie '''AnsiStrings''' sind '''UnicodeStrings''' Referenz gezählte, null-terminierte Arrays. Diese beinhalten allerdings keine '''[[#Char|Chars]]''' sondern '''[[#WideChar|WideChars]]'''.
  
{{Note|The UnicodeString naming is a bit ambiguous but probably due to its use in Delphi on Windows, where the OS uses UTF16 encoding; it's not the only string type that can hold Unicode string data (see also UTF8String)...}}
+
{{Note|Die Namensgebung ''UnicodeString'' ist ein wenig missverständlich, aber wahrscheinlich wegen seiner Verwendung in Delphi unter Windows passend, wo das Betriebssytem UTF16-Codierung verwendet. Der UnicodeString ist nicht die einzigste String-Datentyp, der Unicode-Zeichenfolge-Daten enthalten kann (siehe auch UTF8String)...}}
  
 
{| class="wikitable" style="text-align:center; width:390px"
 
{| class="wikitable" style="text-align:center; width:390px"
Line 123: Line 160:
 
|}
 
|}
  
==== Reference ====
+
====Referenz====
 
* [http://www.freepascal.org/docs-html/ref/refsu13.html FPC UnicodeString documentation]
 
* [http://www.freepascal.org/docs-html/ref/refsu13.html FPC UnicodeString documentation]
 +
* [[Unicodestring/de|Verwendung UnicodeString]]
  
 
== UTF8String ==
 
== UTF8String ==
  
Currently, the type '''UTF8String''' is an alias to the type '''[[#AnsiString|AnsiString]]'''. It is meant to contain UTF8 encoded strings (i.e. unicode data ranging from 1..4 bytes per character) UTF8String is the default string in Lazarus and LCL.
+
Zur Zeit ist der Typ '''UTF8String''' ist ein Alias für den Typ '''[[#AnsiString|AnsiString]]'''. Er enthält UTF8-codierte Zeichenfolgen (d.h. Unicodedaten reichen von 1 bis 4 Byte pro Zeichen). UTF8String ist die Standardzeichenfolge in Lazarus und LCL.
  
==== Reference ====
+
====Referenz====
 
* [[doc:rtl/system/utf8string.html|RTL UTF8String documentation]]
 
* [[doc:rtl/system/utf8string.html|RTL UTF8String documentation]]
  
 
== UTF16String ==
 
== UTF16String ==
  
The type '''UTF16String''' is an alias to the type '''[[#WideString|WideString]]'''. In the LCL unit ''lclproc'' it is an alias to '''[[#UnicodeString|UnicodeString]]'''.
+
Der Typ '''UTF16String '''ist ein Alias für den Typ '''[[#WideString|WideString]]'''. In der LCL-Unit ''lclproc'' ist dieser ein Alias für den Typ '''[[#UnicodeString|UnicodeString]]'''.
  
==== Reference ====
+
====Referenz====
 
* [[doc:lcl/lclproc/utf16string.html|LCL UTF16String documentation]]
 
* [[doc:lcl/lclproc/utf16string.html|LCL UTF16String documentation]]
  
 
== WideString ==
 
== WideString ==
  
Variables of type '''[[Widestrings|WideString]]''' (used to represent unicode character strings in COM applications) resemble those of type '''UnicodeString''', but unlike them they are not reference-counted. On Windows they are allocated with a special windows function which allows them to be used for OLE automation.
+
Variablen vom Typ '''[[Widestrings|WideString]]''' (verwendet, um Unicode-Zeichenfolgen in COM-Anwendungen darzustellen) ähneln denen des Typs '''[[#UnicodeString|UnicodeString]]''', aber im Gegensatz zu ihnen sie sind nicht Referenz gezählt. Unter Windows werden sie mit einer speziellen Windows-Funktion zugeteilt, die ermöglicht, dass sie für die OLE-Automatisierung verwendet werden können.
  
WideStrings consist of COM compatible UTF16 encoded bytes on Windows machines (UCS2 on Windows 2000), and they are encoded as plain UTF16 on Linux, Mac OS X and iOS.
+
WideStrings bestehen aus COM kompatibel UTF16-codierten Bytes auf Windows-Maschinen (UCS2 unter Windows 2000) und sie werden als einfache UTF16 für Linux, Mac OS X und iOS codiert.
  
 
{| class="wikitable" style="text-align:center; width:300px"
 
{| class="wikitable" style="text-align:center; width:300px"
Line 153: Line 191:
 
|}
 
|}
  
==== Reference ====
+
====Referenz====
 
* [http://www.freepascal.org/docs-html/ref/refsu14.html#x37-400003.2.8 FPC WideString documentation]
 
* [http://www.freepascal.org/docs-html/ref/refsu14.html#x37-400003.2.8 FPC WideString documentation]
 +
* [[Widestring/de|Verwendung WideString]]
  
 
== PShortString ==
 
== PShortString ==
  
A variable of type '''PShortString''' is a pointer that points to the first byte of a '''ShortString'''-type variable.
+
Eine Variable vom Typ '''PShortString''' ist ein Zeiger, der auf das erste Byte eines '''[[#ShortString|ShortStrings]]''' zeigt (in welchem die Länge des ShortStrings definiert wird).
  
 
{| class="wikitable" style="text-align:center; width:100px"
 
{| class="wikitable" style="text-align:center; width:100px"
Line 167: Line 206:
 
|}
 
|}
  
==== Reference ====
+
====Referenz====
 
* [[doc:rtl/system/pshortstring.html|RTL PShortString documentation]]
 
* [[doc:rtl/system/pshortstring.html|RTL PShortString documentation]]
  
 
== PAnsiString ==
 
== PAnsiString ==
  
Variables of type '''PAnsiString''' are pointers to '''AnsiString'''-type variables. However, unlike '''PShortString'''-type variables they don't point to the first byte of the header, but to the first '''char''' of the '''AnsiString'''.
+
Eine Variable vom Typ '''PAnsiString''' ist ein Zeiger auf eine Variable vom Typ '''[[#AnsiString|AnsiString]]'''. Anders als bei einem '''PShortString''' zeigt dieser nicht auf das erste Byte des Headers, sondern auf das erste '''Char''' des '''AnsiStrings'''.
  
 
{| class="wikitable" style="text-align:center; width:300px"
 
{| class="wikitable" style="text-align:center; width:300px"
Line 181: Line 220:
 
|}
 
|}
  
==== Reference ====
+
====Referenz====
 
* [[doc:rtl/system/pansistring.html|RTL PAnsiString documentation]]
 
* [[doc:rtl/system/pansistring.html|RTL PAnsiString documentation]]
  
 
== PUnicodeString ==
 
== PUnicodeString ==
  
Variables of type '''PUnicodeString''' are pointers to variables of type '''UnicodeString'''.
+
Eine Variable vom Typ '''PUnicodeString''' ist ein Zeiger, der auf eine Variable des Typs '''[[#UnicodeString|UnicodeString]]''' zeigt.  
  
 
{| class="wikitable" style="text-align:center; width:390px"
 
{| class="wikitable" style="text-align:center; width:390px"
Line 195: Line 234:
 
|}
 
|}
  
==== Reference ====
+
====Referenz====
 
* [[doc:rtl/system/punicodestring.html|RTL PUnicodeString documentation]]
 
* [[doc:rtl/system/punicodestring.html|RTL PUnicodeString documentation]]
  
 
== PWideString ==
 
== PWideString ==
  
Variables of type '''PWideString''' are pointers. They point to the first char of a '''WideString'''-typed variable.
+
Eine Variable vom Typ '''PWideString''' ist ein Zeiger auf eine Variable vom Typ '''[[#WideString|WideString]]'''. Dieser zeigt analog dem '''PAnsiString''' nicht auf den Header sondern auf das ersten Zeichen eines '''WideStrings'''.
  
 
{| class="wikitable" style="text-align:center; width:300px"
 
{| class="wikitable" style="text-align:center; width:300px"
Line 209: Line 248:
 
|}
 
|}
  
==== Reference ====
+
====Referenz====
 
* [[doc:rtl/system/pwidestring.html|RTL PWideString documentation]]
 
* [[doc:rtl/system/pwidestring.html|RTL PWideString documentation]]
  
Line 216: Line 255:
 
* [[LCL Unicode Support]]
 
* [[LCL Unicode Support]]
 
* [[TStringList-TStrings Tutorial]]
 
* [[TStringList-TStrings Tutorial]]
 
+
* [http://www.codexterity.com/delphistrings.htm A Brief History of Strings]
[[Category: FPC]]
 
[[Category: RTL]]
 
[[Category: Data types]]
 
[[Category: Unicode]]
 
--[[User:Michl|Michl]] 13:32, 1 June 2014 (CEST)
 

Latest revision as of 01:23, 11 February 2020

Deutsch (de) English (en) español (es) français (fr) русский (ru) 中文(中国大陆)‎ (zh_CN)

FreePascal unterstützt verschiedene Arten von Zeichen und Zeichenfolgen. Sie reichen von einzelnen ANSI-Zeichen bis hin zu Unicode-Zeichenfolgen und beinhalten auch Zeigertypen. Unterschiede gelten auch für Codierungen und Referenzzählungen.

AnsiChar

Eine Variable vom Typ AnsiChar, auch Char genannt, ist genau 1 Byte groß und enthält ein ANSI-Zeichen.

a

Referenz

WideChar

Eine Variable vom Typ WideChar, auch als UnicodeChar bezeichnet, ist genau 2 Bytes groß und beinhaltet ein (oder ein Teil von einem) Unicode-Zeichen in UTF-16 codiert. Hinweis: Es ist nicht realisierbar alle Unicode-Codepunkte mit 2 Byte zu codieren. Es ist daher möglich, dass einzelnen Codepunkt mit 2 WideChars codiert sind.

a

Referenz

Array of Char

Frühe Pascal-Implementierungen, die vor 1978 in Gebrauch waren, unterstützten keinen Stringtyp (mit Ausnahme von String-Konstanten). Die einzige Möglichkeit zur Speicherung einer Zeichenfolgen in einer Variablen war die Verwendung eines Array of Char. Dieser Ansatz hat viele Nachteile und wird nicht mehr empfohlen. Er wird jedoch immer noch unterstützt, um die Abwärtskompatibilität mit alten Code zu gewährleisten.

Statisches Array of Char

type
  TOldString4 = array[0..3] of char;
var
  aOldString4: TOldString4; 
begin
  aOldString4[0] := 'a';
  aOldString4[1] := 'b';
  aOldString4[2] := 'c';
  aOldString4[3] := 'd';
end;

The statische Array of Char hat nun den Inhalt:

a b c d
Light bulb  Hinweis: Nicht zugewiesene Zeichen können einen beliebigen Inhalt haben, je nachdem, was gerade im Speicher war, als der Speicher für das Array zur Verfügung gestellt wurde.

Dynamisches Array of Char

var
  aOldString: Array of Char; 
begin
  SetLength(aOldString, 5);
  aOldString[0] := 'a';
  aOldString[1] := 'b';
  aOldString[2] := 'c';
  aOldString[3] := 'd';
end;

Das dynamische Array of Char hat nun den Inhalt:

a b c d #0
Light bulb  Hinweis: Nicht zugewiesene Zeichen in einem dynamischen Array of Char haben den Inhalt #0, da freie Positionen aller dynamischen Arrays zunächst mit 0 initialisiert werden (oder #0 oder NULL, oder...)

PChar

Eine Variable vom Typ PChar ist im Grunde ein Zeiger auf einen Char und ermöglicht so zusätzliche Operationen. PChars können verwendet werden, um auf C-Null-terminierte Zeichenfolgen, z. B. in der Interaktion mit bestimmten OS Bibliotheken oder Software von Drittanbietern zugreifen.

a b c #0
^

Referenz

PWideChar

Eine Variable vom Typ PWideChar ist ein Zeiger auf eine WideChar Variable.

a b c #0 #0
^

Referenz

String

Der Typ String steht für ShortString oder AnsiString, je nach Compiler Switch {$H}. Wenn der Schalter aus ist ({$H-}), wird bei jeder Deklaration eines Strings ein ShortString definiert. Dieser hat eine Größe von 255 Zeichen, soweit nicht anders angegeben. Wenn mit ({$H+}) ein String ohne Längenangabe deklariert wird, wird ein AnsiString erstellt, andernfalls, mit einer angegebenen Länge, ein ShortString.

Referenz

ShortString

ShortStrings (kurze Zeichenketten) haben eine maximale Länge von 255 Zeichen mit der impliziten codepage CP_ACP. Die Länge des ShortStrings wird in das erste (nicht sichtbare) Zeichen (Index 0) gespeichert.

#3 a b c

Referenz

AnsiString

Ansistrings oder UTF8Strings sind Zeichenfolgen, die keine Längenbeschränkung haben. Sie sind Referenz gezählt und werden mit Null beendet (null terminated). Intern wird eine Variable vom Typ AnsiString als Zeiger behandelt: der eigentliche Inhalt der Zeichenfolge wird auf dem Heap gespeichert, dem, nach Bedarf des Inhalts der Zeichenfolge, entsprechend viel Arbeitsspeicher zugeordnet ist.

a b c #0
RefCount Length

Referenz

UnicodeString

Wie AnsiStrings sind UnicodeStrings Referenz gezählte, null-terminierte Arrays. Diese beinhalten allerdings keine Chars sondern WideChars.

Light bulb  Hinweis: Die Namensgebung UnicodeString ist ein wenig missverständlich, aber wahrscheinlich wegen seiner Verwendung in Delphi unter Windows passend, wo das Betriebssytem UTF16-Codierung verwendet. Der UnicodeString ist nicht die einzigste String-Datentyp, der Unicode-Zeichenfolge-Daten enthalten kann (siehe auch UTF8String)...
a b c #0 #0
RefCount Length

Referenz

UTF8String

Zur Zeit ist der Typ UTF8String ist ein Alias für den Typ AnsiString. Er enthält UTF8-codierte Zeichenfolgen (d.h. Unicodedaten reichen von 1 bis 4 Byte pro Zeichen). UTF8String ist die Standardzeichenfolge in Lazarus und LCL.

Referenz

UTF16String

Der Typ UTF16String ist ein Alias für den Typ WideString. In der LCL-Unit lclproc ist dieser ein Alias für den Typ UnicodeString.

Referenz

WideString

Variablen vom Typ WideString (verwendet, um Unicode-Zeichenfolgen in COM-Anwendungen darzustellen) ähneln denen des Typs UnicodeString, aber im Gegensatz zu ihnen sie sind nicht Referenz gezählt. Unter Windows werden sie mit einer speziellen Windows-Funktion zugeteilt, die ermöglicht, dass sie für die OLE-Automatisierung verwendet werden können.

WideStrings bestehen aus COM kompatibel UTF16-codierten Bytes auf Windows-Maschinen (UCS2 unter Windows 2000) und sie werden als einfache UTF16 für Linux, Mac OS X und iOS codiert.

a b c #0 #0
Length

Referenz

PShortString

Eine Variable vom Typ PShortString ist ein Zeiger, der auf das erste Byte eines ShortStrings zeigt (in welchem die Länge des ShortStrings definiert wird).

#3 a b c
^

Referenz

PAnsiString

Eine Variable vom Typ PAnsiString ist ein Zeiger auf eine Variable vom Typ AnsiString. Anders als bei einem PShortString zeigt dieser nicht auf das erste Byte des Headers, sondern auf das erste Char des AnsiStrings.

a b c #0
RefCount Length ^

Referenz

PUnicodeString

Eine Variable vom Typ PUnicodeString ist ein Zeiger, der auf eine Variable des Typs UnicodeString zeigt.

a b c #0 #0
RefCount Length ^

Referenz

PWideString

Eine Variable vom Typ PWideString ist ein Zeiger auf eine Variable vom Typ WideString. Dieser zeigt analog dem PAnsiString nicht auf den Header sondern auf das ersten Zeichen eines WideStrings.

a b c #0 #0
Length ^

Referenz

See also