![]() |
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 :) |
Re: leeres edit-Fenster auslesen
ein Problem noch:
Wenn keine Note (mündlich) drin steht macht er einen fehler... habe dies durch abgabe der "anzahl" dann so geregelt, dass eine Fehlermeldung kommt. aber: danach kommt noch ne meldung... bloß die bekomm ich nicht weg. dafür müsste ich wohl dirket prüfen ob die felder leer sind. dies bekomme ich aber leider nicht hin (habe es mit if ... versucht zu lösen) PS: aktuelle Version zum testen des fehlers erhaltet ihr über oberen link |
Re: leeres edit-Fenster auslesen
Die kommt auch von der Klausurnote (Also wenn keine eingegeben wird). Du fängst den Fehler nicht richtig ab. Wenn Du es mit "if" gelöst hast, denke dran, dass Showmessage dann einen eigenen block braucht mit begin und end (evtl auch erst bei else weiterlaufen lassen), sonst läuft es weiter und der Fehler kommt trotzdem.
edit: Ich rate dir auch einen Titel einzugeben, dann kommt danicht immer Project1 als Name einer Showmessage. Project -> Options -> Application -> Title: per Tastatur eintippen :mrgreen: (da kannste auch ein icon einfügen, macht sich immer gut :)) |
Re: leeres edit-Fenster auslesen
Hallo noch mal,
wenn gar keine Note eingegeben wird, ist die Anzahl = 0 und es kommt zu einem division by zero - error bei der Division der Notensumme durch die Anzahl. Ihr müsst prüfen, ob Anzahl > 0 ist und nur dann! den Mittelwert berechnen. |
Re: leeres edit-Fenster auslesen
danke tomsel!
Deine Hilfe hat uns sehr sehr geholfen und der letzte Tipp scheint auch richtig zu sein! weiß gar nicht was ich sagen soll :) Vieeeeeeelen Dank :-D :-D |
Re: leeres edit-Fenster auslesen
schon gut, bitte sehr. Du darfst Dich wieder von den Knien erheben ;-)
man hilft halt, wo man kann. |
Re: leeres edit-Fenster auslesen
-edit-
hatte noch nen fehler, der ist aber un behoben. sorry für überflüssigen post.. *kann ja nen mod mal löschen!?* |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:02 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