Autor Beitrag
AndreM
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 122

Win2k, WinXP, Suse 10
D7 Ent
BeitragVerfasst: Do 12.02.04 20:12 
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.

ausblenden 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.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: 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

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
AndreM Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 122

Win2k, WinXP, Suse 10
D7 Ent
BeitragVerfasst: 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.

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 47

Win XP
D4 Prof
BeitragVerfasst: Do 12.02.04 22:56 
ruf diese Function mit dem OnkeyPress-Ereignis auf und dein Problem ist gelöst.

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


ausblenden 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.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: 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

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Egbert
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 47

Win XP
D4 Prof
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 47

Win XP
D4 Prof
BeitragVerfasst: Fr 13.02.04 11:02 
in titel habe ich versehentlich stringgrid geschrieben, meine natürlich string in integer usw.. egb
AndreM Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 122

Win2k, WinXP, Suse 10
D7 Ent
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 1655
Erhaltene Danke: 13

WinXP Prof.
Bei Kleinigkeiten D3Pro, bei größeren Sachen D6Pro oder D7
BeitragVerfasst: 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.

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

_________________
Popov