Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - String in Integer umwandeln


MasterHiggins - Di 07.10.03 12:31
Titel: String in Integer umwandeln
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 - 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// for i


MasterHiggins - 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 - 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 - 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.


MasterHiggins - Di 07.10.03 13:17

Ok, so geht's!

Danke Herr Retter!

MfG
MasterHiggins


smiegel - Di 07.10.03 13:24

Bitteschön...


maximus - 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.


MasterHiggins - 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. - 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