Einzelnen Beitrag anzeigen

hubestef

Registriert seit: 19. Mai 2008
4 Beiträge
 
#7

Re: Delphi dynamisches Array an C++Dll übergeben

  Alt 19. Mai 2008, 10:55
Hallo SirThornberry

Ich hab jetzt mal eine kleine DLL geschrieben die im Grunde den gleichen Aufruf hat. Es funktioniert leider noch immer nicht, auch wenn ich einen Pointer auf das erste Element mache. cdecl oder stdcall machen auch keinen Unterschied. Kannst du dir bitte den Code noch einmal anschaun, ich glaub ich steh jetzt voll auf der Leitung. Danke

C++ Dll
Code:
 extern "C" _declspec(dllexport) bool add(double *res, double * dat, int size);


bool add(double * res, double *dat, int size){
   double * help;
   int i;
   int count =0;
   for (i = 0; i < size; i++){
      res[i] = dat[i] * 2;
      if (res[i] == 0)
         count ++;
   }
   if (count == 0)
      return true;
   else {
      return false;
   }
}
delphi Implementierung:
Delphi-Quellcode:
 type
 TDim = Array of Double;
  add:function(var outdat:PDouble;dat: TDim; size:Integer): boolean stdcall {$IFDEF WIN32} cdecl {$ENDIF};

procedure TForm1.Button2Click(Sender: TObject);
  var dat, res : TDim;
      size,i : Integer;
      result : Boolean;
      pres : PDouble;
begin
  size := 9;
  SetLength(dat,size);
  SetLength(res,size);

  pres:=@res[0];
  for i := 0 to size-1 do begin
    dat[i] := 2;
  end;

  result := add(pres,dat,size);
  if result = true then begin
        txtStatus.Text := 'add ok!';
        t1.text := FloatToStr(res[0]);
  end else begin
          txtStatus.Text := 'add failed!';
  end;

end;
  Mit Zitat antworten Zitat