Delphi-PRAXiS
Seite 1 von 5  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Edit-Felder auf Inhalt prüfen (https://www.delphipraxis.net/186079-edit-felder-auf-inhalt-pruefen.html)

Rookie91 1. Aug 2015 12:05

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ß

DeddyH 1. Aug 2015 12:17

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.

zeras 1. Aug 2015 12:18

AW: Edit-Felder auf Inhalt prüfen
 
Prüfe doch, ob das Editfeld leer ist mit
Delphi-Quellcode:
if edxxx.text <> ''then

DeddyH 1. Aug 2015 12:20

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.

Rookie91 1. Aug 2015 13:07

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ß

zeras 1. Aug 2015 13:17

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:
TryStrToFloat
nutzen, um den Fehler abzufangen.

DeddyH 1. Aug 2015 13:18

AW: Edit-Felder auf Inhalt prüfen
 
Zähl doch mal, wie oft die folgenden Schnippsel in Deinem Code vorkommen:
Zitat:

Delphi-Quellcode:
case combobox2.ItemIndex of

Zitat:

Delphi-Quellcode:
if Re >= 2320 then

Zitat:

Delphi-Quellcode:
(edit1.Text='') or (edit2.text='')

Wieso ist das so? Geht das nicht auch anders (siehe z.B. den Tipp in meinem letzten Posting)? Das meinte ich mit Strukturieren, das Formatieren fürs Forum war nur Nebensache (wobei man seine Beiträge auch 24 Stunden lang editieren kann und sie nicht wiederholen muss).

DeddyH 1. Aug 2015 13:23

AW: Edit-Felder auf Inhalt prüfen
 
Zitat:

Zitat von zeras (Beitrag 1310598)
Wie oben von mir schon geschrieben. Prüfe beide Edits auf = '', dann steht in beiden nichts drin und du kannst eine Fehlermeldung ausgeben.

Dann ist ja alles in Butter:
Zitat:

Delphi-Quellcode:
if (edit1.Text='') or (edit2.text='') then begin ShowMessage('Es muss ein Wert angegeben werden!'); end;

[edit] Also gut, mal ein Beispiel (auf eine bessere Benennung habe ich bewusst verzichtet):
Delphi-Quellcode:
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;
[/edit]

Rookie91 1. Aug 2015 16:35

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;

Rookie91 1. Aug 2015 16:36

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.
Seite 1 von 5  1 23     Letzte »    

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