![]() |
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; |
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?
|
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!! |
AW: Edit-Felder auf Inhalt prüfen
Aber der itemindex der Combobox hängt doch davon ab, was du anklickst, nicht vom Programm :stupid:
|
AW: Edit-Felder auf Inhalt prüfen
Zitat:
Delphi-Quellcode:
uninitialisiert, was dann ein eher zufälliges Ergebnis produziert. ;)
d
|
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:
|
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:
(Komm mir keiner mit 'with' ist böse)
with ComboBox1 do ItemIndex := Items.IndexOf(Text);
Aber, was lehrt uns das? Immer! Immer und ohne Ausnahme: In ein Case-Statement gehört ein ELSE! |
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:
|
AW: Edit-Felder auf Inhalt prüfen
Zitat:
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. |
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. |
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