![]() |
leeres edit-Fenster auslesen
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo!
Wir programmieren im Informatikunterricht ein Programm zur Berechnung des Notendurchschnitts im Kurshalbjahr. Dazu haben wir eine gewisse Menge an edit-Fenstern erstellt(siehe Bild), jedoch werden nicht immer alle benötigt. Nun ist die Frage: Was tun, wenn ein edit-Fenster leer bleibt? Denn wir müssen ja eingegebene Notensumme durch Notenanzahl rechnen. Da können wir ja keine feste Zahl eingeben... Bild: [i] *schnipp schnapp* Bild in den Anhang geschoben. Unser Code, der aber anscheinend net geht:
Delphi-Quellcode:
Hilfe wäre echt lieb... Es geht um unsere Zeugnisnote :(
procedure TForm1.Button2Click(Sender: TObject);
var e1, e2, e3, e4, e5, e6, e7 : integer; mdl, sch, ges : real; begin e1 := strtoint(edit1.text); e2 := strtoint(edit2.text); e3 := strtoint(edit3.text); e4 := strtoint(edit4.text); e5 := strtoint(edit5.text); e6 := strtoint(edit6.text); e7 := strtoint(edit7.text); if e7 >= 0 then begin mdl := ((e1+e2+e3+e4+e5+e6+e7)/7); end else if e7 <> 0 then begin mdl := ((e1+e2+e3+e4+e5+e6)/6); edit8.Text := floattostr(mdl); end; end; end. [edit=Sharky]Hai siri. Ich habe das Bild aus dem Beitrag in den Anhang "verbannt". Es ist 250 kByte groß. Bedenke immer das es auch User gibt die mit einem Modem ins Internet gehen. Für die wäre es furchtbar wenn jedes mal das Bild geladen wird. Mfg, Sharky[/edit] |
Re: leeres edit-Fenster auslesen
Hallo,
sobald eines der Edits leer ist, verursacht dein Code natürlich eine Exception, da ein Leerer String nicht in einen Integer umgewandelt werden kann. Du könntest per ![]()
Delphi-Quellcode:
und zählen, wie viele Edits einen Wert enthaklten und durch diese Anzahl dann teilen.
if Editx.Text = ''
Nachtrag: Herzlich willkommen. |
Re: leeres edit-Fenster auslesen
:hi:
Zitat:
edit: erst 'plötsinn' geschrieben, dann gemerkt, dass der rest etwas unklar ist :mrgreen: |
Re: leeres edit-Fenster auslesen
Hallo :hi: und herzlich Willkommen in der DP :party:,
wenn du Defaultwerte setzen möchtest wie zum Beispiel 0 kannst du folgendes machen. Du schreibst eine Function, die 3 Parameter aufnimmt. Der erste ist ein Boolean, in den schreibst du dann Editfelt.Text = '', der zweite Parameter wird zurückgegeben, wenn der erste false ist. Also zum Beispiel Editfeld.Text. Der dritte Parameter wird zurückgegeben, wenn der erste Parameter true ist. Da kann dann 0 zurückgegeben werden. :) Ich hoffe das ist verständlich. MfG freak |
Re: leeres edit-Fenster auslesen
Hab mal schnell etwas zusammengetippelt, nur als kleine Demo. Es tritt ein fehler auf, falls im Edit was andere als nichts oder eine Zahl steht, aber das kannst du dann selbst überprüfen, falls es nötig ist:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var i: integer; AktuellesEdit: TEdit; AnzahlVollerEdits: integer; NotenSumme, EndNote: real; begin AnzahlVollerEdits := 0; NotenSumme := 0.0; for i := 1 to ComponentCount do begin AktuellesEdit := (Findcomponent('Edit' + IntToStr(i)) as Tedit); if AktuellesEdit.Text <> '' then begin inc(AnzahlVollerEdits); NotenSumme := NotenSumme + StrToInt(AktuellesEdit.Text); end; end; EndNote := NotenSumme / AnzahlVollerEdits; ShowMessage('Endnote: ' + FloatToStr(EndNote)); end; |
Re: leeres edit-Fenster auslesen
Hallo,
die vorschläge sind sicher o.k., aber m.E. für die "Zielgruppe" etwas zu kompliziert. Macht es doch ganz einfach:
Delphi-Quellcode:
Das ist zwar Anfängerstil, aber euer Programmierkurs-Lehrer kauft es euch wenigstens ab. Dass man dabei wegen fehlender Prüfung entweder gültige Noten oder garnix eingeben muss (um keinen crash zu erleiden), ist sicher akzeptabel.
Anzahl := 0;
if edit1.Text <> '' then begin e1 := strtoint(edit1.text); Anzahl := Anzahl +1; end else e1 := 0; if edit2.Text <> '' then begin e2 := strtoint(edit2.text); Anzahl := Anzahl + 1; end else e2 := 0; ... mdl := ((e1+e2+e3+e4+e5+e6+e7) / Anzahl); Servus tomsel |
Re: leeres edit-Fenster auslesen
Wäre es nicht noch einfacher, StrToIntDef zu verwenden?
|
Re: leeres edit-Fenster auslesen
Hallo!
Dukannst das ganze natürlich auch per ![]() Grüße Faux |
Re: leeres edit-Fenster auslesen
StrToIntDef ist super, aber da muss die Unit SysUtils eingebunden werden. Gehört das explizite Verwenden von Units zum Stoff in diesem Informatikunterricht?
Wenn ja: Statt
Delphi-Quellcode:
einfach
if edit1.Text <> '' then begin
e1 := strtoint(edit1.text); Anzahl := Anzahl +1; end else e1 := 0;
Delphi-Quellcode:
einsetzen, das ist dann sogar resistent gegen Eingabefehler. Aber, wie gesagt, "uses Sysutils" nicht vergessen.
e1 := StrToIntDef(edit1.text, 0);
if e1 > 0 then inc(Anzahl); |
Re: leeres edit-Fenster auslesen
danke für eure ganzen antworten!!
Ich habe es mit Hilfe von tomsels vorschlag gelöst. Und wie er schon sagt: das davor war wirklich recht kompliziert... Ich denke wir müssen nur das fertige Programm vorzeigen, aber trotzdem danke! denn es war wirklich einfacher :) Ich weiß ja nicht obs euch interessiert, aber wenn ja würde ich den quelltext hier reinstellen.... -edit- PS: ![]() Wenn ihr noch paar Vorschläge habt: einfach posten :) Kritik ist immer gut :) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:31 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