![]() |
Edit-Felder auf Inhalt prüfen
Hallo Leute,
ich habe folgendes Problem: ich möchte 2 Edit-Felder, deren Inhalt für eine Berechnung notwendig ist, auf Inhalt überprüfen. Falls dort nichts steht soll eine Message gezeigt werden und im Edit-Feld, wo das Ergebnis gezeigt wird: Berechnung fehlgeschlagen!. Mein Quelltext: procedure TForm2.Button1Click(Sender: TObject); var V,Dichte,d,n,Re: real; begin V:= StrToFloat(edit1.text); Dichte:= StrToFloat(edit11.text); n:= StrToFloat(edit10.Text)/1000000; case combobox2.ItemIndex of 0: d:= 0.01; 1: d:= 0.012; 2: d:= 0.015; 3: d:= 0.02; 4: d:= 0.025; 5: d:= 0.032; 6: d:= 0.04; 7: d:= 0.05; end; Re:= 4*V*Dichte/d/n/3.1416; if Re >= 2320 then begin ShowMessage('Es liegt keine laminare Strömung mehr vor! Reduziere den Volumenstrom und/oder erhöhe den Rohrdurchmesser!'); end; if (edit1.Text='') or (edit2.text='') then begin ShowMessage('Es muss ein Wert angegeben werden!'); end; if (edit1.Text='') or (edit2.text='') then begin edit3.text:= 'Berechnung fehlgeschlagen'; end; if not (edit1.text='') or (edit2.text='') then begin case combobox2.ItemIndex of 0: ... Berechnung ... end; end; if Re >=2320 then begin edit3.text:= 'Berechnung fehlgeschlagen'; end; end; Für Re >= 2320 funktioniert alles. Bei leeren Edit-Feldern kommt die MEldung: " ist not al valid floating point value. Kann mir jemand weiterhelfen? Gruß |
AW: Edit-Felder auf Inhalt prüfen
Strukturier Deinen Code doch erst einmal. Mit den Delphi-Tags (die "Helm"-Schaltfläche im Beitragseditor) kannst Du ihn dann im Forum schön formatiert darstellen.
|
AW: Edit-Felder auf Inhalt prüfen
Prüfe doch, ob das Editfeld leer ist mit
Delphi-Quellcode:
if edxxx.text <> ''then
|
AW: Edit-Felder auf Inhalt prüfen
Das ist im Grunde genommen wurscht, wie man vergleicht. Aber man sollte das nach Möglichkeit nur einmal machen müssen. Tipp: zu einem If-Zweig kann man auch einen Else-Zweig schreiben.
|
AW: Edit-Felder auf Inhalt prüfen
Hallo Leute,
ich habe folgendes Problem: ich möchte 2 Edit-Felder, deren Inhalt für eine Berechnung notwendig ist, auf Inhalt überprüfen. Falls dort nichts steht soll eine Message gezeigt werden und im Edit-Feld, wo das Ergebnis gezeigt wird: Berechnung fehlgeschlagen!. Mein Quelltext:
Delphi-Quellcode:
procedure TForm2.Button1Click(Sender: TObject);
var V,Dichte,d,n,Re: real; begin V:= StrToFloat(edit1.text); Dichte:= StrToFloat(edit11.text); n:= StrToFloat(edit10.Text)/1000000; case combobox2.ItemIndex of 0: d:= 0.01; 1: d:= 0.012; 2: d:= 0.015; 3: d:= 0.02; 4: d:= 0.025; 5: d:= 0.032; 6: d:= 0.04; 7: d:= 0.05; end; Re:= 4*V*Dichte/d/n/3.1416; if Re >= 2320 then begin ShowMessage('Es liegt keine laminare Strömung mehr vor! Reduziere den Volumenstrom und/oder erhöhe den Rohrdurchmesser!'); end; if (edit1.Text='') or (edit2.text='') then begin ShowMessage('Es muss ein Wert angegeben werden!'); end; if (edit1.Text='') or (edit2.text='') then begin edit3.text:= 'Berechnung fehlgeschlagen'; end; if not (edit1.text='') or (edit2.text='') then begin case combobox2.ItemIndex of 0: ... Berechnung ... end; end; if Re >=2320 then begin edit3.text:= 'Berechnung fehlgeschlagen'; end; end; Für Re >= 2320 funktioniert alles. Bei leeren Edit-Feldern kommt die MEldung: " ist not al valid floating point value. Kann mir jemand weiterhelfen? Gruß |
AW: Edit-Felder auf Inhalt prüfen
Wie oben von mir schon geschrieben. Prüfe beide Edits auf = '', dann steht in beiden nichts drin und du kannst eine Fehlermeldung ausgeben.
Du kannst auch
Delphi-Quellcode:
nutzen, um den Fehler abzufangen.
TryStrToFloat
|
AW: Edit-Felder auf Inhalt prüfen
Zähl doch mal, wie oft die folgenden Schnippsel in Deinem Code vorkommen:
Zitat:
Zitat:
Zitat:
|
AW: Edit-Felder auf Inhalt prüfen
Zitat:
Zitat:
Delphi-Quellcode:
[/edit]
procedure TForm3.Button1Click(Sender: TObject);
var Zahl1, Zahl2, Ergebnis: double; Ausgabe: string; begin //Pessimistische Vorbelegung des Augabestrings Ausgabe := 'Berechnung fehlgeschlagen'; if not TryStrToFloat(Edit1.Text, Zahl1) then begin ShowMessage('Ungültige Eingabe für die erste Zahl'); Edit1.SetFocus; Edit1.SelectAll; end else if not TryStrToFloat(Edit2.Text, Zahl2) then begin ShowMessage('Ungültige Eingabe für die zweite Zahl'); Edit2.SetFocus; Edit3.SelectAll; end //Hier können wir weitermachen, Zahl1 und Zahl2 sind aus den Eingaben befüllt else begin Ergebnis := Zahl1 + Zahl2; Ausgabe := FloatToStr(Ergebnis); end; //Ausgabestring darstellen //(enthält entweder das Rechenergebnis oder die Fehlermeldung von ganz oben) Edit3.Text := Ausgabe; end; |
AW: Edit-Felder auf Inhalt prüfen
Hey,
habe das jetzt mal so geändert: ich weiß leider nicht, was mit formatieren gemeint ist :oops:
Delphi-Quellcode:
procedure TForm2.Button1Click(Sender: TObject);
var V,Dichte,n,Re,Laenge,Ergebnis,d: double; Ausgabe: string; begin V:= StrToFloat(edit1.text)/1000; Dichte:= StrToFloat(edit11.text); n:= StrToFloat(edit10.Text)/1000000; Ausgabe:= 'Berechnung fehlgeschlagen'; case combobox2.ItemIndex of 0: d:= 0.01; 1: d:= 0.012; 2: d:= 0.015; 3: d:= 0.02; 4: d:= 0.025; 5: d:= 0.032; 6: d:= 0.04; 7: d:= 0.05; 8: d:= 0.06; 9: d:= 0.065; 10: d:= 0.08; 11: d:= 0.1; end; Re:= 4*V*Dichte/d/n/3.1416; if Re >= 2320 then begin ShowMessage('Es liegt keine laminare Strömung mehr vor! Reduziere den Volumenstrom und/oder erhöhe den Rohrdurchmesser!'); if not TryStrToFloat(edit1.Text, V) then begin showmessage('Werte für Volumenstrom und Länge eingeben!'); edit1.SetFocus; edit1.SelectAll; end else if not TryStrToFloat(edit2.Text, Laenge) then begin showmessage('Werte für Volumenstrom und Länge eingeben!'); edit2.SetFocus; edit2.SelectAll; end else begin Ergebnis:= 40.744/1000000/d/d/d/d*StrToFloat(edit10.Text)*StrToFloat(edit1.Text)*StrToFloat(edit2.text); Ausgabe := FloatToStr(Ergebnis); end; edit3.text:= Ausgabe; if Re >=2320 then begin edit3.text:= 'Berechnung fehlgeschlagen'; end; end; end; |
AW: Edit-Felder auf Inhalt prüfen
jetzt funktioniert die Rechnung sogar nicht mehr...
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:27 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