Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Leeres Feld ohne "ShowMessage...." (https://www.delphipraxis.net/74829-leeres-feld-ohne-showmessage.html)

Andre_Schmidt 9. Aug 2006 11:47


Leeres Feld ohne "ShowMessage...."
 
Hallo Leute

Hab mich mal mit Delphi (Borland Studio 2006) versucht und irgendwie bekomm ich es nicht hin, dass ein Feld wo ich (im moment) keinen Wert eintrage, mit z.B. einer Null zu belegen.

Es kommt immer nur die Fehlermeldung:
"Edit1 is not a valid floating point value"

Ich hoffe es kann mir jemand helfen!


Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var a, b, c, x: Real;

begin
{Einlesen der Variablen}
a := StrToFloat(Edit1.Text);
b := StrToFloat(Edit2.Text);

{Berechnung}
c := b-a;
x := 5*(c);

{Ausgabe der Ergebnisse}

Edit3.Text := FloatToStr(c);
Edit4.Text := FloatToStr(x);

end;

{Programm beenden}
procedure TForm1.ButtonClosedClick(Sender: TObject);
begin
close;
end;

end.

Mfg Andre

idontwantaname 9. Aug 2006 11:51

Re: Leeres Feld ohne "ShowMessage...."
 
Nimm am besten Delphi-Referenz durchsuchenStrToFloatDef statt Delphi-Referenz durchsuchenStrToFloat
Bei dieser Funktion kannst du als 2. Parameter einen Wert angeben, der zurückgegeben wird, wenn der String kein valides Float ist.

Delphi-Quellcode:
{Einlesen der Variablen}
a := StrToFloatDef(Edit1.Text, 0);
b := StrToFloatDef(Edit2.Text, 0);

RavenIV 9. Aug 2006 12:09

Re: Leeres Feld ohne "ShowMessage...."
 
entweder prüfst Du ab, ob in Edit1 und Edit2 was eingegeben wurde und ob es sich um eine Zahl handelt
Delphi-Quellcode:
if (Edit1.Text <> '') AND (isNumber(Edit1.Text)) then
begin
end;
oder Du machst einen try..except um die Zeilen mit StrToFloat.

Angel4585 9. Aug 2006 12:13

Re: Leeres Feld ohne "ShowMessage...."
 
oder du machst:
Delphi-Quellcode:
StrToFloat('0'+Edit1.Text);
aber das iss sauhässlich

Jürgen Thomas 9. Aug 2006 12:54

Re: Leeres Feld ohne "ShowMessage...."
 
Es handelt sich um ein Grundproblem dieser Delphi-Funktionen: StrToInt, StrToFloat usw. liefern immer einen Fehler (d.h. Exception), wenn der gegebene String dem gewünschten Zahlentyp nicht entspricht.

Deshalb muss man dieses Problem immer abfangen:

1. Variante
Zitat:

Zitat von RavenIV
entweder prüfst Du ab, ob in Edit1 und Edit2 was eingegeben wurde und ob es sich um eine Zahl handelt

Dabei gibst Du ggf. den gewünschten Ersatzwert an:
Delphi-Quellcode:
if (Edit1.Text <> '') AND (isNumber(Edit1.Text))
then a := StrToFloat(Edit1.Text)
else a := 0;
2. Variante
Zitat:

Zitat von RavenIV
oder Du machst einen try..except um die Zeilen mit StrToFloat.

Delphi-Quellcode:
try
  a := StrToFloat(Edit1.Text);
except
  a := 0;
end;
3. Variante
Du lässt Dir diese Arbeit von Delphi abnehmen:
Zitat:

Zitat von idontwantaname
Nimm am besten Delphi-Referenz durchsuchenStrToFloatDef statt Delphi-Referenz durchsuchenStrToFloat
Bei dieser Funktion kannst du als 2. Parameter einen Wert angeben, der zurückgegeben wird, wenn der String kein valides Float ist.

Delphi-Quellcode:
{Einlesen der Variablen}
a := StrToFloatDef(Edit1.Text, 0);
b := StrToFloatDef(Edit2.Text, 0);

Viel Erfolg! Jürgen


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

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