AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

leeres edit-Fenster auslesen

Ein Thema von siri · begonnen am 8. Dez 2005 · letzter Beitrag vom 8. Dez 2005
Antwort Antwort
Seite 1 von 2  1 2      
siri

Registriert seit: 8. Dez 2005
5 Beiträge
 
#1

leeres edit-Fenster auslesen

  Alt 8. Dez 2005, 12:37
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]
Miniaturansicht angehängter Grafiken
neu-3_672.jpg  
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: leeres edit-Fenster auslesen

  Alt 8. Dez 2005, 12:40
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:

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


Nachtrag: Herzlich willkommen.
  Mit Zitat antworten Zitat
Benutzerbild von zecke
zecke

Registriert seit: 17. Jan 2004
494 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: leeres edit-Fenster auslesen

  Alt 8. Dez 2005, 12:42


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 ) 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
mfg zecke
  Mit Zitat antworten Zitat
Benutzerbild von freak4fun
freak4fun

Registriert seit: 22. Sep 2004
Ort: Hannover
1.807 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#4

Re: leeres edit-Fenster auslesen

  Alt 8. Dez 2005, 12:47
Hallo und herzlich Willkommen in der DP ,
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
Christian
IT: Schließen Sie bitte das Fenster. User: Die Tür auch?
i++; // zaehler i um 1 erhoehen
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: leeres edit-Fenster auslesen

  Alt 8. Dez 2005, 12:47
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;
  Mit Zitat antworten Zitat
Benutzerbild von tomsel
tomsel

Registriert seit: 8. Dez 2005
Ort: am Chiemsee
304 Beiträge
 
Delphi 7 Professional
 
#6

Re: leeres edit-Fenster auslesen

  Alt 8. Dez 2005, 14:46
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
  Mit Zitat antworten Zitat
petergensfeld

Registriert seit: 8. Dez 2005
Ort: Raeren (B)
6 Beiträge
 
Delphi XE Professional
 
#7

Re: leeres edit-Fenster auslesen

  Alt 8. Dez 2005, 15:46
Wäre es nicht noch einfacher, StrToIntDef zu verwenden?
Dirk
  Mit Zitat antworten Zitat
Benutzerbild von faux
faux

Registriert seit: 18. Apr 2004
Ort: Linz
2.044 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: leeres edit-Fenster auslesen

  Alt 8. Dez 2005, 16:18
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
Faux Manuel
Wer weiß, dass er nichts weiß, weiß mehr, als der der nicht weiß, dass er nichts weiß.
GoTrillian
  Mit Zitat antworten Zitat
Benutzerbild von tomsel
tomsel

Registriert seit: 8. Dez 2005
Ort: am Chiemsee
304 Beiträge
 
Delphi 7 Professional
 
#9

Re: leeres edit-Fenster auslesen

  Alt 8. Dez 2005, 17:31
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.
  Mit Zitat antworten Zitat
siri

Registriert seit: 8. Dez 2005
5 Beiträge
 
#10

Re: leeres edit-Fenster auslesen

  Alt 8. Dez 2005, 17:54
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
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:33 Uhr.
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