Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi leeres edit-Fenster auslesen (https://www.delphipraxis.net/58520-leeres-edit-fenster-auslesen.html)

siri 8. Dez 2005 11:37


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:
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.
Hilfe wäre echt lieb... Es geht um unsere Zeugnisnote :(

[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]

Matze 8. Dez 2005 11:40

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-Referenz durchsuchenFindComponent (oder falls du das nicht kennst, geht's auch bei so wenigen Editfeldern manuell), überprüfen, ob ein Edit leer ist:

Delphi-Quellcode:
if Editx.Text = ''
und zählen, wie viele Edits einen Wert enthaklten und durch diese Anzahl dann teilen.


Nachtrag: Herzlich willkommen.

zecke 8. Dez 2005 11:42

Re: leeres edit-Fenster auslesen
 
:hi:

Zitat:

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...
Die Notenanzahl in einer variable speichern, testen in wievielen Edits etwas drinsteht (steht ja dank matze und des roten Kastens schon da :mrgreen:) und dementsprechend durch diese anzahl speichern. Oder durch die Notenanzahl - (minus) die Anzahl in denen nichts drinsteht teilen.

edit: erst 'plötsinn' geschrieben, dann gemerkt, dass der rest etwas unklar ist :mrgreen:

freak4fun 8. Dez 2005 11:47

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

Matze 8. Dez 2005 11:47

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;

tomsel 8. Dez 2005 13:46

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:
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);
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.

Servus
tomsel

petergensfeld 8. Dez 2005 14:46

Re: leeres edit-Fenster auslesen
 
Wäre es nicht noch einfacher, StrToIntDef zu verwenden?

faux 8. Dez 2005 15:18

Re: leeres edit-Fenster auslesen
 
Hallo!

Dukannst das ganze natürlich auch per Delphi-Referenz durchsuchenval lösen. Dies erzeugt keine Excption, sondern weißtdem dritten parameter eine Zahl <> 0 zu, wenns nicht funktioniert hat.

Grüße
Faux

tomsel 8. Dez 2005 16:31

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:
if edit1.Text <> '' then begin
  e1 := strtoint(edit1.text);
  Anzahl := Anzahl +1;
end else
  e1 := 0;
einfach

Delphi-Quellcode:
e1 := StrToIntDef(edit1.text, 0);
if e1 > 0 then
  inc(Anzahl);
einsetzen, das ist dann sogar resistent gegen Eingabefehler. Aber, wie gesagt, "uses Sysutils" nicht vergessen.

siri 8. Dez 2005 16:54

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:
http://www.halbjahrespartys.de/schule/Project1.exe <- fertigs Programm!

Wenn ihr noch paar Vorschläge habt: einfach posten :)
Kritik ist immer gut :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:42 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz