4.5 Variablen, Datentypen, Konstanten
Variablen sind reservierte Speicherbereiche. Sie haben einen Namen, mit dem sie verwaltet werden, und können mit einem Wert eines bestimmten Typs gefüllt werden. Wird der Variablen ein neuer Wert zugewiesen, dann ersetzt der neue den alten und der alte Wert ist verloren.
| Variable |
Typ |
Speicherbedarf |
Erklärung |
| Ganze Zahlen |
Integer |
4 Byte |
-2147483648 bis 2147483647 |
| Natürliche Zahlen |
Byte |
1 Byte |
0 bis 255 |
| Reelle Zahlen |
Real |
6 Byte |
2,9 * 10 hoch -39 bis 1,7 * 10 hoch 38 |
| Boolescher Wert |
Boolean |
1 Bit |
true oder false |
| Zeichen |
Char |
1 Byte |
256 Zeichen z. B. 'A' oder auch #65 |
| Zeichenketten |
String |
ein Byte pro Zeichen |
'Vorname' + ' ' + 'Nachname' |
| Textdatei |
TextFile |
|
Dateien, die lediglich Text (ASCII- oder UNICODE-Zeichenfolgen in Zeilen angeordnet) enthalten |
| Binärdatei |
File of Byte File of Integer File of Char File of RecordTyp |
|
Dateien mit beliebigem Inhalt |
Das Anlegen des Speicherbereichs heißt deklarieren. Das muss gemacht werden, bevor die Variable das erste Mal aufgerufen wird, also entweder im private-Bereich ganz oben (dann gelten sie für das gesamte Projekt) oder mit var im Bereich implementation unter dem Kommentar {$R *.DFM} bzw. am Anfang der Prozedur, für die sie gelten sollen.
Beispiele:
- Deklarationen für das ganze Projekt ohne var:
private
{ Private declarations }
a, b, c: Integer;
Preis: Real;
Ware1: String;
public
- Deklarationen für die ganze Unit mit var:
implementation
{$R *.DFM}
var
a, b, c: Integer;
Preis: Real;
Ware1: String;
- Deklarationen nur für die Prozedur z. B. als Zählvariable:
procedure TForm1.Button1Click(Sender: TObject);
var
i, j: Integer;
begin
Beim Deklarieren werden der Name und der Datentyp festgelegt. Man kann der Variablen auch schon einen Startwert zuordnen. Nach meiner Erfahrung klappt das aber nur, wenn man die Variablen im Bereich implementation deklariert. Man kann auch nicht mehreren Variablen gleichzeitig in einer einzigen Anwesung einen Startwert zuweisen.
Mit dem folgenden Programm wird als Meldung ausgegeben: "Der Startwert von b ist 7."
implementation
{$R *.DFM}
var
a: String='Der Startwert von b ist ';
b: Integer=7;
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage(a + IntToStr(b) + '.');
end;
Während ganze Zahlen (Integer) stets ganz genau sind, werden die Gleitkommazahlen (Real) immer nur mehr oder weniger angenähert dargestellt. Sie sind daher nicht geeignet für Auswahlstrukturen mit Vergleichen, es sei denn, man benutzt eine Konstruktion in der Art: Bedingung ist erfüllt, wenn der Betrag der Differenz zwischen der Zahl und der Vergleichszahl kleiner ist als etwa 0,000001.
Bitte beachten Sie auch, dass es den Variablentyp "Real" (6 Byte) nur bei Borland gibt. Bei anderen Compilern und anderen Programmiersprachen gibt es nur Single (4 Byte) und Duoble (8 Byte).
Konstanten können nicht geändert werden. Man kann selbst Konstanten deklarieren:
const Maximum = 100;
Andere Konstanten sind in Delphi schon vorbereitet (z. B. die Kreiszahl pi).
In engen Grenzen ist es möglich, einen Variablentyp in einen anderen umzuwandeln. Das geht z. B. mit Funktionen wie IntToStr() oder FloatToStr(). Andererseits wandelt Delphi automatisch Integer in Real um, wenn das nötig wird. Umgekehrt muss man allerdings die Funktion Trunc() benutzen, bei der einfach die Kommastellen abgeschnitten werden.
Wenn die Größen übereinstimmen, funktioniert auch z. B. folgendes:
var a: Byte;
b: Char;
begin
a := 3;
b := Char(a);
|