Dein Code ist korrekt - wenn auch etwas ungewöhnlich. Der von dir beschriebene Fehler dürfte entstehen, wenn du nicht alle Eingabezellen mit Werten belegt hast. Der folgende Code zeigt dir, wie du das abfangen könntest.
In meinem Code habe ich die Arrays für Spannung und Stromstärke der Einfachheit halber eliminiert. Dann habe ich den Komponenten sprechende Namen gegeben. i und j sind klassische Laufvariablen, ich habe deshalb dCurrent eingeführt - d kennzeichnet den Variablen-Typ double und Current sagt etwas über den Verwendungszweck der Variablen aus.
Delphi-Quellcode:
procedure TCalcForm.CalcButtonClick(Sender: TObject);
var
i: integer;
dVoltage, dCurrent, dPower: double;
s: string;
ok: boolean;
begin
with Grid do
for i := FixedRows to RowCount - 1 do begin
ok := TryStrToFloat(Cells[1, i], dVoltage);
ok := ok and TryStrToFloat(Cells[2, i], dCurrent);
if ok then begin
dPower:= dVoltage * dCurrent;
s := FloatToStr(dPower);
end else s := '';
Cells[3, i] := s;
end;
end;
marabu
PS: bei mir gibt es auch kein zweites Grid, die Ausgabe mache ich in Spalte 4...