AGB  ·  Datenschutz  ·  Impressum  







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

Listview Durchschnitt errechnen

Ein Thema von ProgrammiererMike · begonnen am 23. Jan 2011 · letzter Beitrag vom 24. Jan 2011
Antwort Antwort
Seite 1 von 2  1 2      
ProgrammiererMike
(Gast)

n/a Beiträge
 
#1

Listview Durchschnitt errechnen

  Alt 23. Jan 2011, 14:12
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

Geändert von ProgrammiererMike (24. Jan 2011 um 14:01 Uhr) Grund: Keine offene Frage mehr
  Mit Zitat antworten Zitat
Benutzerbild von wicht
wicht

Registriert seit: 15. Jan 2006
Ort: Das schöne Enger nahe Bielefeld
809 Beiträge
 
Delphi XE Professional
 
#2

AW: Listview Durchschnitt errechnen

  Alt 23. Jan 2011, 14:30
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] = 'wthen 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
http://streamwriter.org

"I make hits. Not the public. I tell the DJ’s what to play. Understand?"
  Mit Zitat antworten Zitat
ProgrammiererMike
(Gast)

n/a Beiträge
 
#3

AW: Listview Durchschnitt errechnen

  Alt 23. Jan 2011, 15:01
Nein, das war leider nicht...hast du oder jemand eine andere Idee...

Geändert von ProgrammiererMike (23. Jan 2011 um 15:26 Uhr)
  Mit Zitat antworten Zitat
ProgrammiererMike
(Gast)

n/a Beiträge
 
#4

AW: Listview Durchschnitt errechnen

  Alt 23. Jan 2011, 15:20
Wenn jemand einen anderen Lösungsweg zum errechnen des Durchschnitt hätte wäre ich sehr dankbar...

Geändert von ProgrammiererMike (23. Jan 2011 um 15:27 Uhr)
  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

AW: Listview Durchschnitt errechnen

  Alt 23. Jan 2011, 15:52
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;
  Mit Zitat antworten Zitat
ProgrammiererMike
(Gast)

n/a Beiträge
 
#6

AW: Listview Durchschnitt errechnen

  Alt 24. Jan 2011, 13:27
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] = 'wthen 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

Geändert von ProgrammiererMike (24. Jan 2011 um 14:00 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#7

AW: Listview Durchschnitt errechnen

  Alt 24. Jan 2011, 13:32
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.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.545 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Listview Durchschnitt errechnen

  Alt 24. Jan 2011, 13:32
Zitat:
if lv_schuelerdaten.Items[0].SubItems[I] = 'wthen begin
Überleg Dir einmal genau, was Du hier machst.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
alfold

Registriert seit: 29. Jun 2010
Ort: Neustrelitz
393 Beiträge
 
Delphi 7 Enterprise
 
#9

AW: Listview Durchschnitt errechnen

  Alt 24. Jan 2011, 13:33
Weil Du i für die SubItems benutz und nicht für items!
if lv_schuelerdaten.Items[0].SubItems[I] richtig währe es so

if lv_schuelerdaten.Items[i].SubItems[3] = 'wthen
Gruss alfold
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#10

AW: Listview Durchschnitt errechnen

  Alt 24. Jan 2011, 13:33
Nachtrag: Und einfach mal beim Programmieren das Hirn einschalten, hilft ungemein.
Michael
Ein Teil meines Codes würde euch verunsichern.
  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 14:25 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