Delphi stellt uns zu diesem Zwecke eine entsprechende "TEdit"-Komponente zur Verfügung, welche zur Laufzeit unseres Programms die Eingabe von (kurzen) Texten erlaubt. Der Zugriff auf die eingegebene Zeichenkette ist über die Eigenschaft "Text" der TEdit-Komponente möglich, welche vom Datentyp "String" ist. Der folgende Quelltext liest die TEdit-Komponente "Edit1" aus und kopiert den enthaltenen Text in die String-Variable s:var s: String; begin s := Edit1.Text; {......} end;Die Programmzeile mit dem ":=" ist eine Zuweisung, mit der der Inhalt der rechts vom Zuweisungszeichen stehenden Variablen in die links vom Zuweisungszeichen stehende Variable kopiert wird. Zuweisungen haben also stets die folgende Struktur: |
Java stellt uns zu diesem Zwecke eine entsprechende "TextField"-Komponente zur Verfügung, welche zur Laufzeit unseres Programms die Eingabe von (kurzen) Texten erlaubt. Der Zugriff auf die eingegebene Zeichenkette ist über die Methode "getText()" der "TextField"-Komponente möglich. Der folgende Quelltext liest die TEdit-Komponente "textField1" aus und kopiert den enthaltenen Text in die String-Variable s:String s; s = textField1.getText(); {......}Die Programmzeile mit dem "=" ist eine Zuweisung, mit der der Inhalt der rechts vom Zuweisungszeichen stehenden Variablen in die links vom Zuweisungszeichen stehende Variable kopiert wird. Zuweisungen haben also stets die folgende Struktur: |
In Delphi ist dazu die Zuweisung im vorstehenden Quelltextfragment einfach umzudrehen:
var s: String; begin s := Edit1.Text; Edit2.Text := s; end; |
In Java benutzt man die Methode "setText()" vom textField2, um den in s gespeicherten Text in das textField2 zu schreiben. Dazu muss s als Argument in der Klammer an die Methode übergeben werden:
String s; s = textField1.getText(); textField2.setText(s); |
In Delphi ist dazu die Eigenschaft "Edit2.ReadOnly" auf den Wert "True" zu setzen. | In Java ist dazu die Eigenschaft "textField2.Editable" auf den Wert "false" zu setzen |
Delphi-Typ | Java-Typ | Größe | Zahlbereich | Genauigkeit |
---|---|---|---|---|
Integer | int | 4 Byte | Ganze Zahlen aus dem Bereich [-2147483648, 2147483647] |
(exakt) |
Single | float | 4 Byte | Fließkommazahlen mit Betrag aus [1.5 x 10-45, 3.4 x 1038] |
7-8 geltende Stellen |
Double | double | 8 Byte | Fließkommazahlen mit Betrag aus [5.0 x 10-324, 1.7 x 10308 |
15-16 geltende Stellen |
var n : Integer;In Delphi beginnt eine Variablen-Deklaration also stets mit dem Schlüsselwort "var"; dann folgt der Variablenname, dann ein Doppelpunkt und schließlich der Variablentyp. Die Deklaration wird mit einem Strichpunkt abgeschlossen. Variablennamen können auch länger sein, aber sie dürfen keine Sonderzeichen (wie Umlaute, scharfes S, Akzente usw.) enthalten. Man kann in einer Deklaration auch mehrere Variablen gleichzeitig deklarieren. Wenn wir z.B. in einem Programm zwei Integer-Variablen "n1" und "n2" brauchen und eine Double-Variable namens "dezimalzahl", dann erreichen wir dies mit der folgenden Deklaration: var n1, n2 : Integer; dezimalzahl : Double; |
int n;In Java beginnt eine Variablendeklaration also stets mit der Nennung des gewünschten Variablentyps; dann folgt der Variablenname. Die Deklaration wird mit einem Strichpunkt abgeschlossen. Variablennamen können auch länger sein, aber sie dürfen keine Sonderzeichen (wie Umlaute, scharfes S, Akzente usw.) enthalten. Wenn Sie mehrere Variablen vom gleichen Typ simultan deklararieren wollen, dann können Sie nach dem Typnamen auch mehrere Variablennamen aufführen, die durch Kommata getrennt sind: int n1, n2, n3, summe;Alternativ kann man einer Variablen aber auch gleich bei der Deklaration einen bestimmten Wert zuweisen. Dies geht folgendermaßen: int n1 = 5; int n2 = -8; double dezi = 3.14; |
In Delphi interpretiert "StrToInt()" das übergebene String-Argument als ganze Zahl und gibt deren Wert zurück, "StrToFloat()" interpretiert den übergebenen String als Fließkommazahl. Das folgende Programmfragment zeigt, wie aus dem TEdit-Feld Edit1 eine Integerzahl und aus dem TEdit-Feld Edit2 eine Fließkommazahl ausgelesen werden können:
var n : Integer; res : Double; begin n := StrToInt(Edit1.Text); res := StrToFloat(Edit2.Text); {.......} end; |
In Java interpretiert die Methode "parseInt()" der Klasse "Integer" das übergebene String-Argument als ganze Zahl und gibt deren Wert zurück, "Double.parseDouble()" interpretiert den übergebenen String als Fließkommazahl und gibt deren Wert zurück. Das folgende Programmfragment zeigt, wie aus dem Text-Feld textField1 eine Integerzahl und aus dem Text-Feld textField2 eine Fließkommazahl ausgelesen werden kann:
int n; double res; n = Integer.parseInt(textField1.getText()); res = Double.parseDouble(textField2.getText()); |
Die naheliegende Zuweisung
Edit3.Text := res;wird vom Delphi-Compiler mit einer Fehlermeldung "Inkompatible Typen 'TCaption' und 'Double'" zurückgewiesen. Wir müssen also erst aus dem in "res" abgelegten Wert einen String basteln, den wir dann in das Feld Edit3.Text kopieren können. Glücklicherweise gibt es auch dafür in Delphi schon eine fertige Funktion, nämlich "FloatToStr()". Die korrekte Zuweisung für die Ausgabe der in res gespeicherten Zahl lautet also: Edit3.Text := FloatToStr(res);Es wird Sie nun nicht mehr wundern, dass es für die Ausgabe von Integer-Werten auch eine entsprechende Funktion namens "IntToStr()" gibt. |
Die naheliegende Zuweisung
textField3.setText(res);wird vom Java-Compiler mit der wenig deutlichen Fehlermeldung "cannot find symbol" zurückgewiesen, wobei zu erkennen ist, dass das Symbol "setText()" gemeint ist. Dies soll bedeuten, dass diese Methode nicht mit einer "double"-Variablen als Argument aufgerufen werden kann! Wir müssen also erst aus dem in "res" abgelegten Wert einen String basteln, den wir dann an "setText()" übergeben können, um ihn in das Feld "textField3" kopieren zu lassen. Glücklicherweise gibt es auch dafür in Java schon eine fertige Funktion, nämlich "Double.toString()". Die korrekte Zuweisung für die Ausgabe der in "res" gespeicherten Zahl lautet also: textField3.setText(Double.toString(res));Es wird Sie nun nicht mehr wundern, dass es für Konvertierung von Integer-Werten in Strings auch eine entsprechende Funktion namens "Integer.toString()" gibt. |