Autor Beitrag
MasterHiggins
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 64



BeitragVerfasst: Di 07.10.03 12:31 
Hi!

Ich würde gerne einen String in einen Integer umwandeln, also so:

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 992
Erhaltene Danke: 1

WIN 7
D7 Prof., C#, RAD XE Prof.
BeitragVerfasst: Di 07.10.03 12:50 
Hallo,

eine Möglichkeit wäre, die Umwandlung in einen try-Except-Block zu packen:

ausblenden 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:

ausblenden 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// for i

_________________
Gruß Smiegel
Ich weiß, daß ich nichts weiß, aber ich weiß mehr als die, die nicht wissen, daß sie nichts wissen. (Sokrates)
MasterHiggins Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 64



BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 64



BeitragVerfasst: 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:
ausblenden Quelltext
1:
2:
3:
4:
5:
         TRY
            verjahrint:=StrToInt(verjahr);
         EXCEPT
            ShowMessage('nix int');
         END;
smiegel
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 992
Erhaltene Danke: 1

WIN 7
D7 Prof., C#, RAD XE Prof.
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 64



BeitragVerfasst: Di 07.10.03 13:17 
Ok, so geht's!

Danke Herr Retter!

MfG
MasterHiggins
smiegel
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 992
Erhaltene Danke: 1

WIN 7
D7 Prof., C#, RAD XE Prof.
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 896

Win XP, Suse 8.1
Delphi 4/7/8 alles prof
BeitragVerfasst: Di 07.10.03 14:59 
Vielleicht ist für dich auch die funktion...

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



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

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