Einzelnen Beitrag anzeigen

Fritzew

Registriert seit: 18. Nov 2015
Ort: Kehl
678 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: C-dll Speicheradressen

  Alt 31. Okt 2017, 18:54

Arrays in C sind automatisch immer Zeiger. Also statt dobule bla[] könnte man in C auch einfach double* bla schreiben. Durch die spezielle Zeigerarithmetik in C darf der Array Operator auf jeden Zeiger angewendet werden und greift dabei auf den Speicher bei Index * sizeof(ElementType) zu. Ähnlich funktioniert ja auch Delphis Inc , wenn du es auf eine "typisierte Zeigervariable" z.b. PDobule anwendest. Der Zeiger würde dann automatisch um SizeOf(Double) erhöht werden.

Wenn du deinen eigenen Matrix Typ erstmal weglässt, funktioniert es dann folgendermaßen:
Delphi-Quellcode:
type
  PDoubleArray = ^TDoubleArray;
  TDoubleArray = array[0..0] of Double;

function Jaco(X: PDoubleArray; var DF: PDoubleArray): Integer; cdecl;
Jep so sollte es passen, Habe ich auch nicht mehr daran gedacht...
Fritz Westermann
  Mit Zitat antworten Zitat