Hallo,
Ich habe ein A_Array[i,0] und ein ValueArray[i*4,0] in das die TabWerte aus A_Array + erste neue Werte (min,max,sum.avr) gespeicher werden sollen. (abc := 0)
Folgender Code dazu:
Delphi-Quellcode:
procedure TMomFiles.WerteBerechnen;
var
temp, Avr, Mini, Maxi : real;
begin
if Zeile = 0 then //Erste Zeile als Default übernehmen
begin
ValueArray[abc, 0] := TabWert;
ValueArray[abc+1,0] := TabWert;
ValueArray[abc+2,0] := TabWert;
ValueArray[abc+3,0] := (temp)/(Zeile+1);
if abc < (Spaltenanzahl-1)*4 then abc := abc+4;
end;
if Zeile <> 0 then
begin
//Minimum
if (TabWert < ValueArray[abc,0]) then
ValueArray[abc,0] := TabWert;
//Maximum
if (TabWert > ValueArray[abc+1,0]) then
ValueArray[abc+1,0] := TabWert;
//Mittelwert
ValueArray[abc+2,0] := (ValueArray[abc+2,0]+TabWert);
ValueArray[abc+3,0] := ValueArray[abc+2,0]/(Zeile+1);
if abc < (Spaltenanzahl-1)*4 then abc := abc+4;
end;
end;
Minimum, Maximum ist klar und Mittelwert an sich auch. Das Problem ist nur, dass er in
ValueArray[abc+2,0]
die Summe der entsprechenden Tabwerte speichern soll für die Mittelwertberechnung.
z.B. 1. Durchlauf: TabWert = 2 -> ValueArray[abc+2,0] = 2
2. Durchlauf: TabWert = 5 -> ValueArray[abc+2,0] = 7 usw.
Aber er schreibt immer nur den neuen Wert hinein, ohne die Summe zu bilden. Was läuft da schief?
EDIT : Ich glaube, es liegt an
Setlength(ValueArray,Spaltenanzahl*4,1); //4 Felder pro Spalte (Min,Max,Value,Avr)
Ich habe dieses in der Schleife, wo die Spalten durchlaufen werden und dabei wird dann wohl auch immer das Array neu erstellt?!
Aber wo soll ich damit hin? Schließlich weiß ich doch erst an der Stelle, was 'Spaltenanzahl' ist .