Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Listview Durchschnitt errechnen (https://www.delphipraxis.net/157741-listview-durchschnitt-errechnen.html)

ProgrammiererMike 23. Jan 2011 14:12


Listview Durchschnitt errechnen
 
Hallo Leute!

Ich habe in einem Listview Schülerdaten, ich habe mehrere Spalten mit Stammdaten und eine mit Noten. Jetzt möchte ich von den Schülerinnen(nur w) den Notendurchschnitt ausrechnen und in der Statusbar ausgeben. (in Editfeld kann man die Anzahl der Schüler ausgeben die angezeigt werden sollen, mit Enter bestätigen).
Ich hätte das ganze mit einer Schleife versucht, doch irgendwie sagt er immer Maximum (4) überschritten.
Bitte seht euch mein Projekt an.
Ich hoffe ihr könnt mir zeigen was ich falsch mache.

Mit freundlichen Grüßen

ProgrammiererMike

wicht 23. Jan 2011 14:30

AW: Listview Durchschnitt errechnen
 
Bitte geb dir das nächste mal etwas Mühe, und formatiere den Quelltext ein bisschen.. Das ist sehr unschön so. Wenn man Hilfe erwartet, sollte man immer soviel Vorarbeit wie möglich leisten, das ist jedenfalls meine Einstellung.
Trotzdem hier ein Tip:
Delphi-Quellcode:
For I := 1 to AnzahlderSchueler do begin
if lv_schuelerdaten.Items[0].SubItems[I] = 'w' then begin
   DurchschnittWZähler := DurchschnittWZähler+1;
   DurchschnittWNotenZähler := DurchschnittWNotenZähler+strtofloat(lv_schuelerdaten.Items[4].SubItems[I]);
Du benutzt "I" um auf die SubItems zuzugreifen. Es gibt aber vermutlich nicht so viele SubItems wie AnzahlderSchueler, oder? Daher könnte die Exception kommen.
Und falls du mit "I" über alle Items im ListView iterieren möchtest, mach nicht "For I := 1 to AnzahlderSchueler" sondern "For I := 0 to lv_schuelerdaten.Items.Count - 1"... War das das Problem?

HTH

ProgrammiererMike 23. Jan 2011 15:01

AW: Listview Durchschnitt errechnen
 
Nein, das war leider nicht...hast du oder jemand eine andere Idee...

ProgrammiererMike 23. Jan 2011 15:20

AW: Listview Durchschnitt errechnen
 
Wenn jemand einen anderen Lösungsweg zum errechnen des Durchschnitt hätte wäre ich sehr dankbar...

Matze 23. Jan 2011 15:52

AW: Listview Durchschnitt errechnen
 
Erstens: Hier wird nicht innerhalb von 24 Stunden gepusht.
Zweitens: Schreibe, was nicht funktioniert. Sonst wirst du hier vermutlich keine Hilfe erhalten.

Die von dir genannte Meldung bzgl. des überschrittenen Maximums kommt daher, dass du deine Schleife nicht von 0 bis Anzahl - 1 laufen lässt. Zumindest vermute ich das. Deinen Quelltext habe ich mir nicht angesehen.
Grob müsste es so gehen:
Delphi-Quellcode:
Notensumme := 0;

for i := 0 to AnzahlSchueler - 1 do
begin
  Notensumme := Notensumme + StrToFloat(ListView.Items[i].SubItems[SpaltenIndex]);
end;

Durchschnitt := Notensumme / AnzahlSchueler;

ProgrammiererMike 24. Jan 2011 13:27

AW: Listview Durchschnitt errechnen
 
Also nochmal genauer mein Problem:

Ich habe ein Listview mit 5 Spalten mit Schülerdaten (Vor-und Zuname, Geschlecht, PLZ und Ort, Note, Jahrgang).
Nun will ich in der Statusbar den Durchschnitt der Noten der weiblichen Schülder (Geschlecht=w) ausgeben.
Sowie für jeden Jahrgang (also 1,2,3,4,5) den Durchschnitt der Noten.

Jetzt hab ich gedacht ich mach das so:

Delphi-Quellcode:
For I := 0 to lv_schuelerdaten.Items.Count-1 do begin
    if lv_schuelerdaten.Items[0].SubItems[I] = 'w' then begin
       AnzahlW := AnzahlW+1;
       NotenW := NotenW+strtoint(lv_schuelerdaten.Items[3].SubItems[I]);
       end;
end;
Er soll alle in der Spalte Geschlecht(2. Spalte) durch gehen und wenn der Inhalt w ist dann soll die Anzahl der Schülerinnen um eins mehr werden, und er soll den Inhalt der Spalte Note der Schülerin zu der bisherigen Summe der Noten dazu zählen.

Doch es kommt immer der Fehler Listenindex überschreitet das Maximum (4).

Ich hoffe euch fällt es jetzt leichter mein Problem zu verstehen und mir zu helfen.

Mit freundlichen Grüßen

ProgrammiererMike

Luckie 24. Jan 2011 13:32

AW: Listview Durchschnitt errechnen
 
Bitte guck dir deinen Quellcode noch mal ganz genau an. Und achte mal darauf, wo du die Laufvariable der Schleife benutzt.

Und was hat das Errechnen des Durchschnitts mit einem Listview zu tun? Warum nimmst du nicht die Daten aus der Quelle für den Listview? Du solltest immer Daten, Verabeitung und Darstellung trennen.

DeddyH 24. Jan 2011 13:32

AW: Listview Durchschnitt errechnen
 
Zitat:

Delphi-Quellcode:
if lv_schuelerdaten.Items[0].SubItems[I] = 'w' then begin

Überleg Dir einmal genau, was Du hier machst.

alfold 24. Jan 2011 13:33

AW: Listview Durchschnitt errechnen
 
Weil Du i für die SubItems benutz und nicht für items!
Delphi-Quellcode:
if lv_schuelerdaten.Items[0].SubItems[I]
richtig währe es so

Delphi-Quellcode:
if lv_schuelerdaten.Items[i].SubItems[3] = 'w' then

Gruss alfold

Luckie 24. Jan 2011 13:33

AW: Listview Durchschnitt errechnen
 
Nachtrag: Und einfach mal beim Programmieren das Hirn einschalten, hilft ungemein.


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:00 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