Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Zahl oder nicht?


NetZwerg - So 04.04.04 12:57
Titel: Zahl oder nicht?
Hallo,

ich habe eine Edit-Feld (Name: Zahl) dessen Inhalt ich per StrToInt() in eine Zahl konvertieren möchte. Allerdings möchte ich, dass mein Programm prüft, ob mein Zahl-Feld einen gültigen Integer-Wert oder Text enthält. ich hab ees so versucht:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
procedure TForm1.Button1Click(Sender: TObject);
var
  IrgendeineVariable: integer;
begin
  if StrToInt(Zahl.text) <> S_OK
  then ShowMessage('Bitte geben sie eine Zahl ein!')
  else irgendeineVariable := StrToInt(Zahl.text);
end;


wenn ich jetzt einen text in das fedld eingebe, erscheint allerdings nur die Fehlermeldung

'Der Text den ich eingegeben habe' ist kein gültiger Inetegerwert.

cYa, Dave :twisted:


Motzi - So 04.04.04 13:01
Titel: Re: Zahl oder nicht?

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
procedure TForm1.Button1Click(Sender: TObject);
var
  IrgendeineVariable: integer;
begin
  try
    IrgendeineVariable := StrToInt(Zahl.text);
  except
    ShowMessage('Bitte geben sie eine Zahl ein!');
  end;
end;


Christian S. - So 04.04.04 13:24

Für so etwas sollte man keine Exceptions verwenden. Exceptions sind wirklich nur für Ausnahmen gedacht. Du solltest Val verwenden. Steht in der Hilfe beschrieben, wie man das benutzt.


Motzi - So 04.04.04 13:31

Peter Lustig hat folgendes geschrieben:
Für so etwas sollte man keine Exceptions verwenden. Exceptions sind wirklich nur für Ausnahmen gedacht.

Ja, aber manchmal trotzdem sehr praktisch..! ;)

Aber wenn wir schonmal dabei sind.. Möglicherweise kann StrToIntDef() auch ganz interesant für dich sein.. :)


NetZwerg - So 04.04.04 16:57

InToStrDef() wäre theoretisch gut, nur soll kein Standartwert zurückgegeben werden, deshalb schlecht! :roll:


FaTaLGuiLLoTiNe - Di 27.04.04 19:37

Ich weiss ja nicht genau, aber gibt's da nicht auch ne Funktion IsNumeric(String):Boolean???

// Oh, geht wahrscheinlich gar nicht, weil wenn's Numeric ist muss es ja noch kein Integer sein, sorry.


Christian S. - Di 27.04.04 19:41

(1) Ist der Thread schon etwas älter und
(2) habe ich bereits geschrieben, wie es geht ("Val").


raziel - Di 27.04.04 19:59

(1) Macht das nix, falls doch mal einer auf die Idee kommt, die Suchfunktion zu benutzen
(2) Der Vollständigkeit halber: Es gibt noch die Möglichkeit "TryStrToInt":

Delphi-Quelltext
1:
function TryStrToInt(const S: stringout Value: Integer): Boolean;                    

liefert false, falls S kein gültiger Integer ist. Andernfalls gibt Value den konvertierten Wert als Integer zurück und result := true

raziel