Difference between revisions of "Character and string types/de"
m (links updated) |
(Translation) |
||
Line 134: | Line 134: | ||
== AnsiString == | == AnsiString == | ||
− | + | 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 151: | Line 149: | ||
== UnicodeString == | == UnicodeString == | ||
− | + | Wie '''AnsiStrings''' sind '''UnicodeStrings''' Referenz gezählte, null-terminierte Arrays. Diese beinhalten allerdings keine '''[[#Char|Chars]]''' sondern '''[[#WideChar|WideChars]]'''. | |
− | {{Note| | + | {{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 168: | Line 166: | ||
== UTF8String == | == UTF8String == | ||
− | + | 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. | |
====Referenz==== | ====Referenz==== | ||
Line 175: | Line 173: | ||
== UTF16String == | == UTF16String == | ||
− | + | 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]]'''. | |
====Referenz==== | ====Referenz==== | ||
Line 182: | Line 180: | ||
== WideString == | == WideString == | ||
− | + | 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 | + | 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 198: | Line 196: | ||
== PShortString == | == PShortString == | ||
+ | |||
+ | '''In Bearbeitung --[[User:Michl|Michl]] 23:07, 11 June 2014 (CEST)''' | ||
A variable of type '''PShortString''' is a pointer that points to the first byte of a '''ShortString'''-type variable. | A variable of type '''PShortString''' is a pointer that points to the first byte of a '''ShortString'''-type variable. |
Revision as of 23:07, 11 June 2014
│
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 |
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 |
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.
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
In Bearbeitung --Michl 23:07, 11 June 2014 (CEST)
A variable of type PShortString is a pointer that points to the first byte of a ShortString-type variable.
#3 | a | b | c |
^ |
Referenz
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.
a | b | c | #0 | ||||||||
RefCount | Length | ^ |
Referenz
PUnicodeString
Variables of type PUnicodeString are pointers to variables of type UnicodeString.
a | b | c | #0 | #0 | |||||||||||
RefCount | Length | ^ |
Referenz
PWideString
Variables of type PWideString are pointers. They point to the first char of a WideString-typed variable.
a | b | c | #0 | #0 | |||||||
Length | ^ |
Referenz
See also
--Michl 13:32, 1 June 2014 (CEST)