Einzelnen Beitrag anzeigen

Johannes G.

Registriert seit: 23. Aug 2017
Ort: Lustenau
16 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#5

AW: C-dll Speicheradressen

  Alt 31. Okt 2017, 15:09
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
  Mit Zitat antworten Zitat