Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - StringGrid Zellen addieren und Mittelwert bilden
gecko676 - Sa 13.03.04 15:39
Titel: StringGrid Zellen addieren und Mittelwert bilden
Hallo,
gleich mal eine Entschuldigung. Ich bin ein absoluter Neuling beim Programmieren!
Ich habe einen StringGrid mit 1-n Zeilen und möchte aus einer Spalte die Summe bilden und daraus wiederum den Mittelwert
zur späteren Weiterverwendung.
Wie schon gesagt die Zeilenanzahl ist variabel.
Soll einem Programm zur einfachen statistischen Berechnung von Versuchsergebnissen dienen.
Danke im Voraus.
MfG
hansa - Sa 13.03.04 18:35
Addiere doch einfach die Zelleninhalt auf.
Delphi-Quelltext
1: 2: 3:
| Summe := 0; for i := 0 to StringGrid1.RowCount do begin Summe := Summe + StrToInt (StringGrid1.Cells [1,i]) |
Summe wäre dann Spalte 1 aufaddiert.
gecko676 - So 14.03.04 16:17
Danke!!!
Ich komme im Momment nicht mal auf die einfachsten Ansätze.
Also vielen Dank
gecko676 - So 14.03.04 18:38
Habe es jetzt mal in meinem Programm versucht, gibt ne Fehlermeldung: ''' kein Gültiger String!
Keine Ahnung warum!
Nächstes Problem wäre die zu addierenden Werte sind Gleitkommazahlen.
Also müsste man so etwas wie.
Delphi-Quelltext
1: 2: 3:
| Summe := 0; for i := 1 to StringGrid1.RowCount do begin Summe := Summe + Val(StringGrid1.Cells[1,i], Summe?, code); |
oder so ähnlich.
Achso, die ertse Zelle soll ausgeschlossen werden daher i:=1
Würde gern mein ganzes Programm mal hier rein stellen,
aber wie wäre das möglich
raziel - So 14.03.04 19:10
Val is eine Procedure und hat als solche kein Ergebnis. Das müsstest dann so machen:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| var tmp, summe: Extended; code: Integer;
tmp := 0; Summe := 0;
for i := 1 to StringGrid1.RowCount do begin Val(StringGrid1.Cells[1,i], tmp, code); Summe := Summe + tmp; end; |
optional kannst auch "code" auslesen und so auf fehler reagiern.
ich hoff es stimmt so... ;-)
raziel
hansa - Fr 19.03.04 04:19
Warst wohl lange nicht mehr zuhause ? :lol: Das mit dem Code und Val, das stimmt schon so, aber wie wäre es damit StrToInt duch StrToFloat zu ersetzen ? Wenn VAR summe : real; ? Oh, jetzt ist aber echt Schluß. 8)
raziel - Fr 19.03.04 17:20
in letzter zeit mehr bei FPC :oops:
jo so gehts auch, aber wenn der string nich passt, gibs ne exception, bei Val nen netten error code, welches zeichen nich passt, das isn tick informativer ;-)
geht auch, nur wird real nich von der FPU unterstützt. lieber single, double oder extended...
raziel
gecko676 - Mo 22.03.04 11:56
Hi,
hab ein paar Tage nicht mehr rein geschaut!
Danke für alle Tipps....
:wink:
grayfox - Di 23.03.04 00:57
hallo gecko676!
versuchs mal auf diese weise:
Delphi-Quelltext
1: 2: 3: 4: 5:
| for i := 1 to StringGrid1.RowCount-1 do begin Val(StringGrid1.Cells[1,i], tmp, code); if code = 0 then Summe:= Summe + tmp end; |
rowcount -1 deshalb, da du sonst eine zeile zu weit liest.
mit code = 0 kannst du überprüfen, ob die umwandlung geklappt hat - ich würde zuerst überprüfen, ob der ganze string richtig umgerechnet wurde, denn sonst könnte es vorkommen, dass du nur teile davon in der variablen 'tmp' zurückgeliefert werden. bei fehlern enthält 'code' die zahl der fehlerstelle
mfg, stefan
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!