Danke für den Vorschlag, habs aber jetzt doch selbst hingekriegt (mehr oder weniger).
Hier erstmal meine Änderungen.
Delphi-Quellcode:
procedure TForm3.Matrixmul(Sender:TObject);
var matrixA: array of array of double;
matrixB: array of array of double;
matrixC: array of array of double;
a,b,c,i,j,k:integer;
begin
a:=StrToInt(EditA.Text);
b:=StrToInt(EditB.Text);
c:=StrToInt(Editb.Text);
SetLength(matrixA,a,b);
SetLength(matrixB,b,c);
SetLength(matrixc,a,c);
for i := 0 to a-1 do
for j := 0 to c-1 do
begin
matrixc[i,j] := 0;
SG3.Cells[j,i]:='0';
end;
For i:= 0 to SG1.RowCount-1 do
for j:= 0 to SG1.ColCount-1 do
begin
matrixA[i,j]:=StrToFloat(SG1.Cells[j,i]);
end;
for i:= 0 to SG2.RowCount-1 do
for j:= 0 to SG2.ColCount-1 do
begin
MatrixB[i,j]:=StrToFloat(SG2.Cells[j,i]);
end;
for i := 0 to SG1.RowCount-1 do
for j := 0 to SG3.ColCount-1 do
for k := 0 to SG2.RowCount-1 do
begin
matrixc[i,j] := matrixc[i,j] + (matrixa[i,k] * matrixb[k,j]);
SG3.Cells[j,i]:=FloatToStr(matrixc[i,j]);
end;
end;
In den meisten Fällen funzt das jetzt. Will ich nun jedoch z.B. eine 4x2
mit einer 2x4 Matrix multiplizieren, so erhalte ich eine neue Fehlermeldung.
"ungültige Zeigeroperation"
Was soll das denn bedeuten? Danke für eure Hilfe