Ich muss hier doch mal einen harten Kommentar geben:
"der Sourcecode ist Schrott, denn es wird völlig planlos auf irgendwelche Zellen zugegriffen"
Du hast ein Stringgrid und möchtest aus verschiedenen Zellen eine Zahl entnehmen
um damit zu rechnen.
Die Zellen können aber auch leer sein oder die Zellenposition ist ungültig.
Also braucht man eine saubere Funktion, die alle Fehler abfängt:
Delphi-Quellcode:
function GetFloatFromStringGrid(sg: TStringGrid; x,y:integer):extended;
begin
Assert(Assigned(sg));
// Bereichsgrenzen prüfen
if (x<sg.FixedCols)
or (y<sg.FixedRows)
or (x >= sg.ColCount)
or (y>=sg.RowCount)
then
raise Exception.CreateFmt('
GetFloatFromStringGrid(%s,%d, %d) - Position ungültig', [sg.
name, x, y]);
try
// Umwandlung
result := StrToFloat(sg.cells[x,y]);
except
on E:
Exception do
begin
E.
Message := Format('
Fehler in %s.Cells[%d, %d]'#13#10 ,[sg.
name, x,y])+E.
Message;
Raise;
end;
end;
end;
Mit der obigen Funktion bekommt die Sache Hand und Fuss.
Du bekommst sofort eine saubere Fehlermeldung, die zeigt, wo's klemmt.