Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - String in Interger umwandel und überprüfen


AndreM - Do 12.02.04 20:12
Titel: String in Interger umwandel und überprüfen
Moin,

ich weiß das ist jetzt ne wahrscheinlich sehr dumme Frage, aber irgendwie stehe ich heute Abend nen wenig auf dem Schlauch.

Also ich habe ein Edit-Feld, in welches ich eine Zahl eingeben. Diese Zahl muß ich dann in einen Integer umwandel.

Das ganze geht ja ohne weiteres mit strtotin(str). Wenn jetzt der Anwender jedoch anstatt einer Zahl einen Buchstaben oder ein Zeichen eingegeben hat stürzt das Programm ja logischerweise ab.

Also dacht ich mit, versuch ich das ganze mal über try und except abzufangen, aber irgendwie ist das zu hoch für mich.

Also ich hab es mal mit folgendem Code probieret.


Delphi-Quelltext
1:
2:
3:
4:
5:
try
  zahl:= strtoint(edit1.text);
except
  showmessage('Ist kein Integer');
end;

Aber irgendwie ist der Code nicht wirklich richtig! :D

Helft mir mal bitte auf die Sprüngen, und danach trau ich mich wahrscheinlich nie wieder hier hin! :D


Christian S. - Do 12.02.04 20:13

Hallo!

Try-Except würde ich hier nicht versuchen. Schau' Dir doch mal die Prozedur "Val" an.

MfG
Peter


AndreM - Do 12.02.04 20:29

OK, besten dank! Funzt ganz wunderbar.

Aber zum Thema try hab ich trotzdem noch eine Frage. Wie müßte der Code denn aussehen, wenn ich z.B. überprüfen möchte ob ein SQL-Code gültig ist.

Als Beispiel würde ich mal folgenden Code nehmen.


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
try
  Form_Haupt.IBQuery_Einlesen.SQL.Clear;
  Form_Haupt.IBQuery_Einlesen.SQL.Add('select * from TABELLE1 where ID = 1');
  Form_Haupt.IBQuery_Einlesen.Open;
except
  Showmessage('Es ist ein Fehler aufgetreten');
end;


Das hatte ich auch mal versucht, aber auch wenn ein Fehler beim Form_Haupt.IBQuery_Einlesen.Open; auftritt wird der zweig trotzdem ausgeführt und die Fehlermeldung wird ignoriert!


Egbert - Do 12.02.04 22:56
Titel: String in Interger umwandel und überprüfen
ruf diese Function mit dem OnkeyPress-Ereignis auf und dein Problem ist gelöst.


Delphi-Quelltext
1:
Key:=NurZahlen(Key);                    



Delphi-Quelltext
1:
2:
3:
4:
5:
Function NurZahlen(Key:Char):Char;
Begin
  if Not (Key in ['0'..'9',#8,#13]) then Key:=#0;
  Result:=Key;
end;

{------------------------------------------------------------------}
viel Erfolg egbert..

Moderiert von user profile iconPeter Lustig: Delphi-Tags hinzugefügt


Christian S. - Do 12.02.04 23:16

Hallo!

Überprüfe mal, ob das nur in der IDE so ist oder auch, wenn Du die EXE-Datei außerhalb der IDE ausführst. Normalerweise zeigt die IDE Exceptions auch an, wenn diese in einem normalen Programmablauf gefangen worden wären.

MfG
Peter


Egbert - Fr 13.02.04 10:57
Titel: zu StringGrid usw...
hallo,
diese function habe ich mal vor jahren geschrieben und sie in einer globalen unit abgelegt. immer wieder, wenn ich in einer edit-komponente nur zahlen zulasse, verwende sie. probleme hat es damit noch nie gegeben.
Gruß Egbert


Egbert - Fr 13.02.04 11:02

in titel habe ich versehentlich stringgrid geschrieben, meine natürlich string in integer usw.. egb


AndreM - Fr 13.02.04 11:34

Peter Lustig hat folgendes geschrieben:
Hallo!

Überprüfe mal, ob das nur in der IDE so ist oder auch, wenn Du die EXE-Datei außerhalb der IDE ausführst. Normalerweise zeigt die IDE Exceptions auch an, wenn diese in einem normalen Programmablauf gefangen worden wären.

MfG
Peter

Moin Peter,

genau das war das Problem. Und ich brach mir hier einen ab, und dabei liegt es nicht am Code, sondern an der IDE! :D


Popov - Fr 13.02.04 18:57

Hin und wieder gucken was in der FAQ steht!

... prüfen ob der String eine korrekte Zahl enthällt. [http://www.delphiforum.de/viewtopic.php?p=37474]

Da steht wie man Strings auf Zahlen prüfen kann. Ohne Try-Except!