Danke, jetzt habe ich das mit dem Pointer auf ein Array verstanden
Ich habe mein Bsp. einwenig abgeändert, da der Pointer
df auf die Matrix
df[][] und nicht auf das Array x[] zeigen soll!
Code:
pMatrix = ^TMatrix;
tMatrix = array[0..1,0..1] of Double;
Funktion jac:
Code:
function Jac(var x: Tarray; var
df: pMatrix) : integer; cdecl;
begin
df[0][0] := x[0] / 2 + 1;
df[0][1] := 2 * x[1] / 5;
df[1][0] := x[0] / 2;
df[1][1] := x[1] + 1;
result := 0;
end;
Der ptr
df zeigt jetzt auf den ersten Eintrag der Matrix
df[0][0], die Adressen der anderen 3 Einträge sind jeweils um 8Byte dahinter (aneinander gefolgt). Ich denke das passt soweit!
Irgendwas stimmt aber trotzdem noch nicht. Wenn ich durch die Funktion debugge, öffnet sich am Ende der Reiter "CPU" mit folgender Zeile:
7775067D C605A592787700 mov byte ptr [$777892a5],$00 was hat das zu bedeuten?
Auch die Funktion newt der
DLL gibt mir einen Fehler zurück: Matrix singulär. Heißt also, dass die Einträge der
df-Matrix doch nicht am richtigen Platz landen