Hallo Noobinator,
irgendwann wirst du feststellen müssen, dass dein Problem nichts mit den Speicherroutinen zu tun hat. Es ist einfach ungeschickt anzunehmen, dass bei jedem Fach eine Note steht. Der folgende Code geht von FixedCols = 1 aus und verwendet die erste Spalte zur Anzeige des Durchschnittswertes einer Zeile, in der Integer-Werte eingetragen werden:
Delphi-Quellcode:
function Average(s: TStrings; iStart: Integer): String;
var
i, iSum, iCount, iValue: Integer;
begin
iSum := 0;
iCount := 0;
for i := iStart to Pred(s.Count) do
if TryStrToInt(s[i], iValue) then
begin
Inc(iCount);
Inc(iSum, iValue);
end;
if iCount = 0
then Result := ''
else Result := Format('%.1f', [iSum / iCount]);
end;
procedure TDemoForm.StringGridSetEditText(Sender: TObject; ACol,
ARow: Integer; const Value: String);
begin
with StringGrid do
Cells[0, ARow] := Average(Rows[ARow], FixedCols);
end;
Die notwedigen Änderungen für einen gewichteten Durchschnitt (Hauptfächer=3, WPU=2, Nebenfächer=1) wirst du selbst machen müssen. Und was die Speicher-Routinen angeht, so solltest du diese zuerst analysieren, bevor du sie kopierst oder gar veränderst. Deine Änderungen an dem Code aus Beitrag #1 legen den Verdacht nahe, dass du die Routinen nicht verstanden hast - ich weiß wie der Code vor deinen Änderungen aussah.
Grüße vom marabu