Object Pascal im Detail - Variablen und Konstanten www.delphi-treff.de
50
um 1 erhöht und wiederum ausgegeben. Durch ReadLn wird verhindert, dass sich das Konsolenfenster sofort wieder schließt. ReadLn wartet darauf, dass der Benutzer eine Eingabe durch Drücken der Enter-
Taste bestätigt. Die Anwendung kann jetzt über das Menü Start - Ausführen oder den Shortcut F9 kompiliert und gestartet
werden. Es erscheint das folgende Fenster:
Das ist jetzt aber merkwürdig. Die Variable wird im Programmcode um 1 erhöht, hat danach aber auf einmal einen negativen Wert. Wenn man sich den Wertebereich von Integer ansieht, fällt einem auf, dass der zuerst
zugewiesene Wert die obere Grenze ist. Wenn man jetzt den Wert erhöht, kann die Variable den Wert nicht mehr speichern. Anstatt aber einen Fehler auszugeben, wird einfach von vorne begonnen zu zählen. Das hängt
damit zusammen, wie Zahlen intern repräsentiert werden. Ist dieses Verhalten nicht erwünscht, dann sollte man in den Compiler-Optionen die Überlaufprüfung
aktivieren.
4.1.9. Typumwandlung
Im Gegensatz zu einigen anderen Sprachen ist Delphi bei Typen sehr streng. Es ist also nicht möglich, einer Integer-Variablen eine Gleitkommazahl-Variable zuzuweisen. Dafür steht eine große Auswahl an
Konvertierungsfunktionen zur Verfügung:
von nach
Funktion Beispiel
Integer
Real kein Problem, einfache Zuweisung
var intzahl: integer;
realzahl: real;
begin
realzahl := intzahl;
Real Integer
Möglichkeiten: - Nachkommastellen abschneiden trunc
- kaufm. Runden round - aufrunden ceil, Unit Math
- abrunden floor, Unit Math
var realzahl: real;
intzahl: integer;
begin
intzahl := truncrealzahl; intzahl := roundrealzahl;
Object Pascal im Detail - Variablen und Konstanten www.delphi-treff.de
51
Integer String
IntToStr var textzahl: string;
intzahl: integer;
begin
textzahl := IntToStrintzahl;
Real
String FloatToStr
FloatToStrF
var textzahl: string;
realzahl: real;
begin
textzahl := FloatToStrrealzahl;
String Integer
StrToInt StrToIntDef
var textzahl: string;
intzahl: Integer;
begin
intzahl := StrToInttextzahl;
String Real
StrToFloat var textzahl: string;
realzahl: real;
begin
realzahl := StrToFloattextzahl;
String Char
Zugriff über Index 1 ist erstes Zeichen
var text: string;
zeichen: char;
begin
zeichen := text[1];
Char String
kein Problem, einfache Zuweisung var zeichen: char;
text: string; begin
text := zeichen;
4.1.10. Konstanten
Konstanten sind letztendlich Variablen, die innerhalb des Programms jedoch nur ausgelesen, nicht überschrieben werden dürfen. Deklariert werden sie an den gleichen Stellen wie Variablen, allerdings mit dem
Schlüsselwort const anstelle von var, einem Gleichheitszeichen und ohne Angabe eines Datentyps:
Object Pascal im Detail - Variablen und Konstanten www.delphi-treff.de
52
const Version = 1.23; Der Datentyp ergibt sich aus dem zugewiesenen Wert. Sind Anführungszeichen davor und dahinter, handelt es
sich um einen String, sonst um eine Zahl. Enthält die Zahl kein Dezimaltrennzeichen, wird der Datentyp Integer verwendet, ansonsten Real.
Ü
BUNGSAUFGABEN
1. Welche dieser Variablendeklarationen sind in Delphi erlaubt mehr als eine Antwort möglich:
var _var1: Integer; var i: String;
var 2teZahl: Integer; var übung: Double;
2. A el he “telle i folge de Code ist die eile „ a : I tege ; nicht erlaubt?
unit 1; interface
uses SysUtils; 1
implementation 2
procedure DoSomething; 3
begin 4
x := 1; WriteLnIntToStrx;
end; end.
3. Was passiert bei folgender Zuweisung:
var x: Integer; begin
x := 100.123; end;
o Beim Kompilieren tritt ein Fehler auf.
o Zur Laufzeit tritt ein Fehler auf.
o Es tritt gar kein Fehler auf.
Object Pascal im Detail - Datentypen www.delphi-treff.de