| Autor |
Beitrag |
MasterHiggins
      
Beiträge: 64
|
Verfasst: Di 07.10.03 12:31
Hi!
Ich würde gerne einen String in einen Integer umwandeln, also so:
Quelltext 1:
| zahlxint:=STRTOINT(zahlxstr); |
Ich WEISS aber nicht ob der String ein gültiger Integerwert wäre.
Wann immer ein nichtgültiger Integerwert in "zahlxstr" steht, würde ich diesen gerne einfach "ignorieren".
Weil momentan stürzt mir natürlich an dieser Stelle mein Programm immer ab.
Thanks:
mfG
MasterHiggins
|
|
smiegel
      
Beiträge: 992
Erhaltene Danke: 1
WIN 7
D7 Prof., C#, RAD XE Prof.
|
Verfasst: Di 07.10.03 12:50
Hallo,
eine Möglichkeit wäre, die Umwandlung in einen try-Except-Block zu packen:
Delphi-Quelltext 1: 2: 3: 4: 5:
| try zahlxint:=STRTOINT(zahlxstr); except ShowMessage('Keine Zahl!'); end; |
Eine andere Möglichkeit waäre, den String darauf zu prüfen ob er nur Zahlen enthält:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7:
| var i:Integer;
for i:=1 to Length(zahlxstr) do if not (zahlxstr[i] in ['0'..'9']) then begin ShowMessage('Keine Zahl!'); Break; end; |
_________________ Gruß Smiegel
Ich weiß, daß ich nichts weiß, aber ich weiß mehr als die, die nicht wissen, daß sie nichts wissen. (Sokrates)
|
|
MasterHiggins 
      
Beiträge: 64
|
Verfasst: Di 07.10.03 12:59
Danke für Deine schnelle Antwort!
Diesen Try-Block kannte ich gar nicht!
Super Funktion!
An die zweite Möglichkeit habe ich auch gedacht, war mir für meinen Verwendungszweck aber zu aufwendig.
Werde ich sofort mal testen
Also vielen Dank nochmal!
mfG
MasterHiggins
|
|
MasterHiggins 
      
Beiträge: 64
|
Verfasst: Di 07.10.03 13:07
Hab's grade mal getestet und es liefert immer noch die selbe Fehlermeldung ( '' ist keine gültiger Integerwert), Quelltext sieht bei mir so aus:
Quelltext 1: 2: 3: 4: 5:
| TRY verjahrint:=StrToInt(verjahr); EXCEPT ShowMessage('nix int'); END; |
|
|
smiegel
      
Beiträge: 992
Erhaltene Danke: 1
WIN 7
D7 Prof., C#, RAD XE Prof.
|
Verfasst: Di 07.10.03 13:14
Hallo,
wenn das Programm in der IDE läuft, erhälst Du den Fehler trotzdem. Damit dies nicht passiert, musst Du unter Tools->Debugger-Optionen, das Häckchen bei "Bei Delphi-Exceptions stoppen" auf der Registerseite "Sprach-Exceptions" wegnehmen.
Wenn Du die Exe außerhalb der IDE startest, tritt keine Exception auf.
_________________ Gruß Smiegel
Ich weiß, daß ich nichts weiß, aber ich weiß mehr als die, die nicht wissen, daß sie nichts wissen. (Sokrates)
|
|
MasterHiggins 
      
Beiträge: 64
|
Verfasst: Di 07.10.03 13:17
Ok, so geht's!
Danke Herr Retter!
MfG
MasterHiggins
|
|
smiegel
      
Beiträge: 992
Erhaltene Danke: 1
WIN 7
D7 Prof., C#, RAD XE Prof.
|
Verfasst: Di 07.10.03 13:24
Bitteschön...
_________________ Gruß Smiegel
Ich weiß, daß ich nichts weiß, aber ich weiß mehr als die, die nicht wissen, daß sie nichts wissen. (Sokrates)
|
|
maximus
      
Beiträge: 896
Win XP, Suse 8.1
Delphi 4/7/8 alles prof
|
Verfasst: Di 07.10.03 14:59
Vielleicht ist für dich auch die funktion...
Delphi-Quelltext 1:
| zahlxint:=StrToIntDef(zahlxstr,0); |
..interessant! Sie löst keine exception aus wenn die eingabe ungültig ist und setzt das ergebnis auf den wert des zweiten parameters.
_________________ mfg.
mâximôv
|
|
MasterHiggins 
      
Beiträge: 64
|
Verfasst: Di 07.10.03 15:07
Ja schön!
Das ist ja genau die perfekte Funktion für meinen Zweck, da ich bis jetzt bei Exception den Integerwert "manuell" auf einen "Dummy-Wert" gesetzt habe!
Fetten Dank nochmal an euch beide, habt mir sehr geholfen!
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Di 07.10.03 15:20
Hallo!
Der Vollständigkeit halber möchte ich hier noch einmal auf die Prozedur "Val" aufmerksam macht, die sich zu oben genanntem eignet, wenn es keinen Dummywert geben kann (weil z.B. alle Werte als "echte" Werte möglich sind). Ist auf jeden Fall eleganter, als eine Exception zu verwenden.
MfG
Peter
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|