Programmierkurs: Delphi: Datentypen
Datentypen (Array, Records und Typen)
BearbeitenArrays
BearbeitenEin Array ermöglicht es, Daten zu indizieren und Tabellen zu erstellen. Es gibt zwei verschiedene Arten von Arrays:
Eindimensionale Arrays
BearbeitenStatische Arrays
Bearbeiten- Ein statisches Array besitzt eine in der Variablendeklarierung festgelegte Größe, die in eckigen Klammern angegeben wird:
var test_array: array[1..10] of Byte;
definiert ein Array, das mit 10 Byte-Werten gefüllt werden kann. Man unterscheidet in Delphi zwischen 0-basierten und 1-basierten Arrays, wobei der Unterschied eigentlich nur in der Zählweise liegt:
var array_0: array[0..9] of Byte;
definiert ein gleich großes Array mit 0 als ersten Index. Dies ist eigentlich Geschmacksache, aber wer nebenbei C/C++ programmiert, dem wird die 0-basierte Schreibweise sicher vertrauter sein.
Dynamische Arrays
Bearbeiten- Ein dynamisches Array ist in seiner Größe dynamisch (wie der Name schon sagt). Das heißt, dass man die Größe während der Laufzeit verändern kann, um beliebig große Datenmengen aufzunehmen. Die Deklaration erfolgt mit
var array_d: array of Byte;
Will man zur Laufzeit dann die Größe verändern, so erfolgt die über die procedure SetLength(array, neue_Laenge)
. Mit den Funktionen High(array)
und Low(array)
erhält man den höchsten und den niedrigsten Index des Arrays. Bei dynamischen Arrays ist zu beachten, dass diese immer 0-basiert sind.
Mit Length(tabelle1)
bekommt man die Länge des Arrays heraus. Hier ist zu beachten, dass bei einem Array von 0 bis 2, 3 Elemente vorhanden sind und darum die Zahl 3 zurückgegeben wird.
Der Zugriff auf ein Array erfolgt mit arrayname[5] := 10;
. Der Vorteil von Arrays ist, dass man sie einfach in Schleifen einbauen kann:
var arrayname: array[1..10] of Byte; begin for i := 1 to 10 do arrayname[i] := 10; end;
Mehrdimensionale Arrays
BearbeitenAußerdem kann man mit Arrays mehrere Dimensionen definieren:
Statische Arrays
Bearbeitenvar tabelle1: array[1..10] of array[1..10] of Byte; // dies ist gleichbedeutend mit: tabelle2: array[1..10, 1..10] of Byte;
definiert beides eine Tabelle mit der Größe 10x10. Der Zugriff erfolgt über
tabelle[5, 8] := 10;
Damit wird die Zelle in der 8. Reihe und in der 5. Spalte mit 10 belegt.
Dynamische Arrays
Bearbeitenvar Tabelle1: array of array of Byte;
Natürlich muss man auch hier mit SetLength
die Länge des Arrays bestimmen. Und das geht so:
SetLength(Tabelle1, 9, 9);
Dies definiert eine 2-dimensionale Tabelle mit der Größe 9×9. Der Zugriff kann nun wie bei einem statischen Array erfolgen. Beide Indizes liegen im Bereich 0..8.
Typen
BearbeitenMit einer Typendeklaration kann man eigene Datentypen festlegen, dies erfolgt z.B. durch
type
Zahl = Integer;
Nach dieser Deklaration kann man überall anstatt Integer Zahl einsetzen:
var
x: Zahl;
Interessant werden Typen, wenn man zum Beispiel eine Arraydefinition, z.B. eine bestimmte Tabelle öfter einsetzen will:
type Tabelle = array[1..10, 1..10] of Byte;
oder wenn man Records oder Klassen benutzt.
Natürlich funktioniert das mit allen Arten von Arrays, also auch mehrdimensional, dynamisch, etc.
Records
BearbeitenMit einem Record kann man einer Variable mehrere Untervariablen geben, dies ist z.B. bei Datensammlungen der Fall. Man definiert einen Record fast immer über einen Typen:
type THighscoreEintrag = record Nr: Byte; Name: string; Punkte: Integer; end;
Wenn man nun eine 10-stellige Highscoreliste erstellen will, dann benutzt man die Anweisung:
var Hscr: array[1..10] of THighscoreEintrag; begin Hscr[1].Nr := 1; Hscr[1].Name := 'Der Erste'; Hscr[1].Punkte := 10000; end;
Einstieg | Inhaltsverzeichnis | Pointer |