![]() |
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 |
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:
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.
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]); 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 |
AW: Listview Durchschnitt errechnen
Nein, das war leider nicht...hast du oder jemand eine andere Idee...
|
AW: Listview Durchschnitt errechnen
Wenn jemand einen anderen Lösungsweg zum errechnen des Durchschnitt hätte wäre ich sehr dankbar...
|
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; |
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:
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.
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; 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 |
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. |
AW: Listview Durchschnitt errechnen
Zitat:
|
AW: Listview Durchschnitt errechnen
Weil Du i für die SubItems benutz und nicht für items!
Delphi-Quellcode:
richtig währe es so
if lv_schuelerdaten.Items[0].SubItems[I]
Delphi-Quellcode:
if lv_schuelerdaten.Items[i].SubItems[3] = 'w' then
Gruss alfold |
AW: Listview Durchschnitt errechnen
Nachtrag: Und einfach mal beim Programmieren das Hirn einschalten, hilft ungemein.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:59 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