Delphi-PRAXiS
Seite 4 von 5   « Erste     234 5      

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 2. Aug 2015 11:52

AW: Edit-Felder auf Inhalt prüfen
 
Nochmal der Quellcode:

Delphi-Quellcode:
procedure TForm2.Button1Click(Sender: TObject);
var d,V,Dichte,n,Re: real;
begin
 V:= StrToFloat(edit1.Text)/1000;
 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;
   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!');
   end;

 edit3.text:= FloatToStr(40.744/d/d/d/d*n*V*StrToFloat(edit2.text));

   if Re >=2320 then
   begin
   edit3.text:= 'Berechnung fehlgeschlagen';
   end;

end;

DeddyH 2. Aug 2015 11:53

AW: Edit-Felder auf Inhalt prüfen
 
Dann kann ja kein anderer Wert drinstehen, es sei denn, er wird zwischendurch wieder überschrieben oder der ItemIndex der ComboBox passt zu keinem case-Label. Gibt denn der Compiler keine Meldungen/Warnungen aus?

Rookie91 2. Aug 2015 12:02

AW: Edit-Felder auf Inhalt prüfen
 
Habe es gerade durch Zufall herausgefunden: Der Grund war wie DeddyH schreibt der itemindex der combobox. Der stand auf -1. Bin mir sicher, dass ich daran nichts geändert habe..naja mit itemindex 0 funktionierts wieder!

Vielen Dank euch!!

idefix2 2. Aug 2015 14:09

AW: Edit-Felder auf Inhalt prüfen
 
Aber der itemindex der Combobox hängt doch davon ab, was du anklickst, nicht vom Programm :stupid:

Sir Rufo 2. Aug 2015 14:23

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

Zitat von idefix2 (Beitrag 1310680)
Aber der itemindex der Combobox hängt doch davon ab, was du anklickst, nicht vom Programm :stupid:

Aber diesen Fall hat er nicht abgefragt und somit bleibt
Delphi-Quellcode:
d
uninitialisiert, was dann ein eher zufälliges Ergebnis produziert. ;)

idefix2 2. Aug 2015 15:56

AW: Edit-Felder auf Inhalt prüfen
 
Klar, er prüft ja auch sonst nichts - bloss frage ich mich, warum er sich über unsinnige Ergebnisse wundert, wenn er dem Programm nicht eingibt, was es rechnen soll...

Zitat:

Zitat von Rookie91 (Beitrag 1310666)
... der itemindex der combobox. Der stand auf -1. Bin mir sicher, dass ich daran nichts geändert habe..naja mit itemindex 0 funktionierts wieder!

(unterstrichen von mir)

Dejan Vu 2. Aug 2015 16:02

AW: Edit-Felder auf Inhalt prüfen
 
Ich meine mich zu erinnern, das der ItemIndex auf -1 steht, solange man nichts in der Combo *verändert*, d.h. steht dort schon eine Auswahl drin (per OI reingepackt), habe ich dort eben die -1 drin.

Daher verlasse ich mich erst gar nicht auf den ItemIndex und setze ihn
Delphi-Quellcode:
with ComboBox1 do ItemIndex := Items.IndexOf(Text);
(Komm mir keiner mit 'with' ist böse)

Aber, was lehrt uns das? Immer! Immer und ohne Ausnahme: In ein Case-Statement gehört ein ELSE!

idefix2 2. Aug 2015 16:11

AW: Edit-Felder auf Inhalt prüfen
 
Wobei in dem Fall ein case Statement ohnehin Unsinn ist:
Delphi-Quellcode:
const werte:array[0..10] of real = (xx, xx, ...);
...

d:=werte[combobox2.ItemIndex]


Zitat:

Daher verlasse ich mich erst gar nicht auf den ItemIndex und setze ihn with ComboBox1 do ItemIndex := Items.IndexOf(Text);
Eine Kombobox ist doch dazu da, dass man zur laufzeit einen Wert anklickt, nicht dazu, dass man vom Programm her den Wert setzt!

idefix2 2. Aug 2015 16:20

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

Zitat von Dejan Vu (Beitrag 1310692)
Ich meine mich zu erinnern, das der ItemIndex auf -1 steht, solange man nichts in der Combo *verändert*, d.h. steht dort schon eine Auswahl drin (per OI reingepackt), habe ich dort eben die -1 drin.

Nein, da steht schon der richtige Wert drin, der zum Text passt (ausser der Text kommt in der Itemliste nicht vor)

andersrum: es wird der Text angezeigt, der zu Itemindex passt, auch wenn im OI ein anderer text eingegeben wurde. Will man eine Vorauswahl haben, muss man im OI den Itemindex entprechend setzen - es hängt natürlich auch vom Style der Compbobox ab. Aber jedenfalls sieht der User, was er ausgewählt hat, wenn er auf den Execute-button (oder so) klickt.

hoika 2. Aug 2015 17:31

AW: Edit-Felder auf Inhalt prüfen
 
Hallo,

um noch mal auf das Abfangen leerer Edit-Felder zurückzukommen.

Dein if editxxx.Text='' muss vor dem ersten StrToFloat(editxxx.Text) kommen.


Heiko


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:05 Uhr.
Seite 4 von 5   « Erste     234 5      

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