Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Ein String auf numerisch Testen (https://www.delphipraxis.net/78759-ein-string-auf-numerisch-testen.html)

Progger2005 10. Okt 2006 17:57


Ein String auf numerisch Testen
 
Hallo Leutz!

Ich übergebe mir aus einen EditFeld den Inhalt an eine Variable(integer). Durch StrToInt lasse ich es umwandeln...
Wenn man Zaheln eingibt alles schön und gut.. nur was wenn man plötzlich mal einen Buchstabe eingibt? -> Logischer weiße eine Fehler! Nun möchte ich vor dem Umwandeln testen ob im Textfeld nur Ziffern eingegeben wurden?? Wie geht das? Unter VB mit IsNumeric ... aber unter Delphi keine Ahnung? Gibt es etwas vorgefertigtes??


Danke Schonmal

MfG
Progger2005

Flare 10. Okt 2006 17:59

Re: Ein String auf numerisch Testen
 
Probiere es mal mit TryStrToInt!


Flare

Progger2005 10. Okt 2006 18:55

Re: Ein String auf numerisch Testen
 
Servus!

Ich habe es versucht jedoch ohne Ergebnis geblieben??
Ich will ja möglichst auch noch eine Ausgabe tätigen um den Benutze mitzuteilen was er falsch gemacht hat..

mkinzler 10. Okt 2006 19:07

Re: Ein String auf numerisch Testen
 
Zeig mal etwas Code, dann kann man die u.U. sagen, warum das gewünschte Ergebnis ausgeblieben ist.

Progger2005 10. Okt 2006 19:14

Re: Ein String auf numerisch Testen
 
Hier der CODE
Habe es jedoch mit TryStrToFloat gemacht...sollte ja aber trotzdem gehen..

Also ich will herausfiltern wenn ein Buchstabe eingegeben wurde...das da net gerechnet wird...
Delphi-Quellcode:
procedure Tmain.cmdBerechnenClick(Sender: TObject);
  var F,A,p:Real;
begin
  F:=TryStrToFloat(txtF.Text);
  A:=TryStrToFloat(txtA.Text);
  If A=0 Then
    //Ausgabe das Falsche Werte eingegeben wurden
    txtp.text:='Falsche Werte'
  Else
    begin
    //Weiterrechnen
    p:=F/A;
    txtp.Text:=FloatToStr(p);
    end;

end;

mkinzler 10. Okt 2006 19:21

Re: Ein String auf numerisch Testen
 
Du hast die Funktion falsch angewandt.
Als Rückgabewert erhälst du ein Boolean, der aussagt, ob die Konvertierung erfolgreich war. Den Wert erhälst du per var-Parameter.

Progger2005 10. Okt 2006 19:52

Re: Ein String auf numerisch Testen
 
Also um es mal darzulegen das Problem.
Delphi-Quellcode:
b:=TryStrToFloat(txtA.Text,A);
also:
b - boolean Wert
A- Float Wert


Hab ich das richtig verstanden?

mkinzler 10. Okt 2006 19:55

Re: Ein String auf numerisch Testen
 
Zitat:

Hab ich das richtig verstanden?
Ja.

also:

Delphi-Quellcode:
if not TryStrToFloat(txtF.Text, F) then
   //Ausgabe das Falsche Werte eingegeben wurden

Thanatos81 10. Okt 2006 19:59

Re: Ein String auf numerisch Testen
 
Ja, richtig. Man könnte es auch so machen:
Delphi-Quellcode:
procedure Tmain.cmdBerechnenClick(Sender: TObject);
var
  F, A: Real;
begin
  if TryStrToFloat(txtF.Text, F) and TryStrToFloat(txtA.Text, A) then
  begin
    //Weiterrechnen
    p := F/A;
    txtp.Text := FloatToStr(p);
  end
  else
    txtp.text := 'Falsche Werte'
end;
//Edit: Und denk dran A auf <> 0 zu überprüfen sonst gibt es evtl. ne nette Division durch null ;-)

mkinzler 10. Okt 2006 20:01

Re: Ein String auf numerisch Testen
 
Dann würde ich aber noch überprüfen, ob A <> 0 ist!

Progger2005 10. Okt 2006 20:04

Re: Ein String auf numerisch Testen
 
oki... ich Danke euch

Luckie 10. Okt 2006 20:15

Re: Ein String auf numerisch Testen
 
Warum nicht gleich verhindern, dass Buchstaben eingegeben werden können?

Flare 10. Okt 2006 20:49

Re: Ein String auf numerisch Testen
 
Dann müsste man aber auch noch die doppelte Eingabe von einem Komma usw überprüfen...so ist es kurz und knapp.


Flare

Luckie 10. Okt 2006 20:56

Re: Ein String auf numerisch Testen
 
Zeig mir mal eine Ganzzahl mit Komma. ;)

Flare 10. Okt 2006 21:03

Re: Ein String auf numerisch Testen
 
Er benutzt TryFloatToString :zwinker:


Flare

Hobby-Programmierer 10. Okt 2006 21:21

Re: Ein String auf numerisch Testen
 
Nabend ...,
ich bin der gleichen Meinung wie Luckie. Statt auf Fehler zu reagieren und dem Benutzer vielleicht noch ne 'BlaBla'-Botschaft zu senden, sollte man doch besser im Vorfeld Fehleingaben ausschliessen! Möglich wäre dies zb. durch TMaskEdit oder im OnChange Event von TEdit.

LG Mario


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:32 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz