Autor Beitrag
gecko676
Hält's aus hier
Beiträge: 14



BeitragVerfasst: Sa 13.03.04 15:39 
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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3079
Erhaltene Danke: 9



BeitragVerfasst: Sa 13.03.04 18:35 
Addiere doch einfach die Zelleninhalt auf.
ausblenden 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.

_________________
Gruß
Hansa
gecko676 Threadstarter
Hält's aus hier
Beiträge: 14



BeitragVerfasst: So 14.03.04 16:17 
Danke!!!

Ich komme im Momment nicht mal auf die einfachsten Ansätze.

Also vielen Dank
gecko676 Threadstarter
Hält's aus hier
Beiträge: 14



BeitragVerfasst: 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.

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2453

Arch Linux
JS (WebStorm), C#, C++/CLI, C++ (VS2013)
BeitragVerfasst: So 14.03.04 19:10 
Val is eine Procedure und hat als solche kein Ergebnis. Das müsstest dann so machen:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
var
      tmp, summe: Extended; { oder single bzw. double } 
      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

_________________
JSXGraph
hansa
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3079
Erhaltene Danke: 9



BeitragVerfasst: 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)

_________________
Gruß
Hansa
raziel
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2453

Arch Linux
JS (WebStorm), C#, C++/CLI, C++ (VS2013)
BeitragVerfasst: 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 ;-)
ausblenden Delphi-Quelltext
1:
var summe: real;					

geht auch, nur wird real nich von der FPU unterstützt. lieber single, double oder extended...


raziel

_________________
JSXGraph
gecko676 Threadstarter
Hält's aus hier
Beiträge: 14



BeitragVerfasst: Mo 22.03.04 11:56 
Hi,

hab ein paar Tage nicht mehr rein geschaut!

Danke für alle Tipps....


:wink:
grayfox
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 800

win98, winXP
D4 Standard; D6 Personal
BeitragVerfasst: Di 23.03.04 00:57 
hallo gecko676!

versuchs mal auf diese weise:
ausblenden 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