Der Epina Delphi-Kurs bietet Ihnen eine allgemeine Einführung in das Programmieren mit Delphi/Pascal. Mit vielen ausgearbeiteten Beispielen können Sie direkt in die Delphi-Programmierung einsteigen. Mehr dazu finden Sie hier....

Datentypen

Pascal ist eine streng typisierte Sprache. Darunter versteht man eine Sprache, bei der der Programmier gezwungen wird, die einzelnen Datentypen zu deklarieren und die Verwendung dieser Typen nur typgerecht durchzuführen. Damit kann man z.B. das Alter eines Werkstücks nicht zur Bezeichnung des Werkstücks addieren (auch wenn das Werkstück als Bezeichnung eine Nummer trägt).

Persönl. Anmerkung: Streng typisierte Sprachen werden manchmal als Sprachen für "Weicheier" und "Warmduscher" bezeichnet, da man mit solchen Sprachen viele Dinge nicht machen kann. Meine Sicht der Dinge (nach vielen Jahren Assembler-Erfahrung, was mich garantiert nicht als "Warmduscher" erscheinen lässt) ist die, dass gerade streng typisierte Sprachen extrem gut geeignet sind, Programmfehler von vorneherein zu vermeiden.

Pascal unterstützt einige vordefinierte, einfache Datentypen, die im Folgenden beschrieben werden:
  • ganze Zahlen: integer, word, byte, longint, shortint, cardinal, smallint, int64
  • Gleitkommazahlen: single, double, extended
  • logische Typen: boolean
  • Zeichen und Zeichenketten: char, string
Falls Sie sich eine Menge Arbeit sparen wollen, so bietet Ihnen die SDL Component Suite einen idealen Einstieg. Die Light-Version ist gratis!
Ganze Zahlen

Eigentlich gibt es ja (zumindest in der Mathematik) nur einen Typ von ganzen Zahlen; trotzdem bieten die meisten Programmiersprachen unterschiedliche Ganzzahltypen an, die sich im Wertebereich den sie abdecken unterscheiden. Der Grund dafür liegt darin, dass eine Zahl, die einen kleineren Wertebereich abdeckt auch weniger Speicherplatz verbraucht (was bei großen Feldern entscheidend sein kann). Allerdings sind einige Typen gleich und eine Unterscheidung ist nur historisch gesehen gerechtfertigt. Die folgende Tabelle gibt einen Überblick zu den ganzzahligen Datentypen; in der Praxis verwendet man meist nur byte, word, integer und int64.

Typ Bereich Speicherbedarf
[byte]
byte 0 bis 255 1
word 0 bis 65535 2
shortint -128 bis 127 1
smallint -32768 bis 32767 2
integer -2147483648 bis 2147483647 4
longint -2147483648 bis 2147483647 4
cardinal 0 bis 4294967295 4
longword 0 bis 4294967295 4
int64 -263 bis 263-1 8

Gleitkommazahlen

Gleitkommazahlen können reelle Zahlen mit einer bestimmten Präzision und innerhalb eines bestimmten Wertebereichs darstellen. Die folgende Tabelle gibt einen Überblick dazu:

Typ Bereich Präzision
(sig. Stellen)
Speicherbedarf
[byte]
single 1.5*10^-45 .. 3.4*10^38 7 4
double 5.0*10^-324 .. 1.7*10^308 15 8
extended 3.6*10^-4951 .. 1.1*10^4932 19 10

Logische Typen

Von den vordefinierten logischen Typen ist eigentlich nur ein Typ wichtig, nämlich boolean (falls man nicht mit Visual Basic kompatibel sein muss). Der Boole'sche Datentyp kennt nur zwei Werte, nämlich true und false.

Zeichen und Zeichenketten

Um Zeichen abzuspeichern werden verschiedene Codierungen verwendet, von denen die ASCII, ANSI und Unicode die wichtigsten sind. Delphi unterstützt sowohl ANSI als auch Unicode und stellt die folgenden drei Typen zur Verfügung:
Typ Speicherbedarf
[byte]
Codierung
char 1 entspricht ANSIchar
ANSIchar 1 ANSI codierte Zeichen
widechar 2 Unicode Zeichen

Um ein Zeichen explizit zu referenzieren muss man das entsprechende Zeichen entweder zwischen zwei Hochkommas stellen, oder es als ASCII/ANSI-Code mit einem vorangestellen '#'-Zeichen definieren: z.B. sowohl 'A' als auch #65 bezeichnen ein großes A;

Möchte man mehrere Zeichen zu einer Zeichenkette zusammenfügen und bearbeiten, so sind dafür verschiedene string-Typen vorhanden, wobei diese sich sowohl in der max. Länge als auch in der Codierung unterscheiden. Außerdem gibt es aus historischen Gründen zwei Arten, Strings abzuspeichern: Strings mit Längenbyte, und so genannte null-terminierte Strings:

Typ Länge Codierung null-terminiert
ShortString 255 ANSIchar nein
AnsiString bis ca. 3 GB ANSIchar ja
String entweder 255 oder bis ca. 3 GB ANSIchar nein oder ja
WideString bis zu 1.5 GB WideChar ja

Eine Besonderheit betrifft noch den Typ string. Dieser kann wahlweise per Compiler-Switch {$H+} auf ShortString oder AnsiString eingestellt werden. Die Voreinstellung ist AnsiString.

Hinweis: Strings mit Längenbyte (ShortString) können als Array aufgefasst werden und von 1 bis 255 adressiert werden. Ein Element eines Strings ist dann vom Typ char. Um einen bestimmten Buchstaben im String zu lesen schreibt man einfach z.B. astr[3], was den dritten Buchstaben im String "astr" zurück gibt.

Last Update: 2011-08-16