Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Umformung: String zu Zahl


NaRF - Mi 18.09.02 16:51
Titel: Umformung: String zu Zahl
kann mir einer folgendes erklären ?


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
procedure TForm1.Button1Click(Sender: TObject);
var x, y, z: Single;
    s: string; code: Integer;
begin
Val(Edit1.Text, x, code);  if code <> 0 then exit;
Val(Edit2.Text, y, code);  if code <> 0 then exit;
z:= x+y;
Str(z:6:2,s);
Label3.Caption := s;
end;

end.


mir ist eigentlich alles klar bis auf :

Quelltext
1:
Val(Edit1.Text, x, code);  if code <> 0 then exit;                    


Was ist die Funktion der Variable "code"? Warum muss sie = 0 sein ? Warum muss sie Integer sein ?

Bitte antwortet mir.

Danke schonmal im Vorraus.

NaRF


SvenAbeln - Mi 18.09.02 17:01

Hallo,

ein kleiner Blick in die Hilfe liefert zu VAL folgendes

Zitat:
Ist der String ungültig, wird der Index des betreffenden Zeichens im Parameter Code gespeichert. Andernfalls wird Code der Wert Null zugewiesen. Bei einem nullterminierten String ist die in Code zurückgegebene Fehlerposition um eins größer als der auf Null basierende Index des Zeichens.


Also ist Code = 0 wenn der String fehlerfrei konvertiert werden konnte.


NaRF - Mi 18.09.02 18:14

danke :shock:
:roll: an die hilfe-datei hab ich gar nicht gedacht


Delete - Mi 18.09.02 20:17

NaRF hat folgendes geschrieben:
danke :shock:
:roll: an die hilfe-datei hab ich gar nicht gedacht


Da bist du leider nicht der einzigeste. :roll:


Anonymous - Mi 18.09.02 23:06

Mit anderen Worten: Wenn code ungleich 0 ist, dann gab es einen Fehler bei der Konvertierung. Der Wert sagt also an welcher Stelle des Strings ein fehlerhaftes Zeichen aufgetaucht ist. Beispiel:


Quelltext
1:
s := '1234#56';                    


Hier ist an der fünften Stelle ein fehlerhaftes Zeichen und code müßte den Wert 5 haben.

Noch ein Hinweis: code übergibt keinen Wert, sondern erhällt den Wert.