Einzelnen Beitrag anzeigen

Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.544 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: C++ DLL - Headerkovertierung und Funktionsaufruf

  Alt 6. Jun 2011, 17:14
Ich habe es nun selbst versucht und dabei ist das hier heruasgekommen. Da ich aber nicht sonderlich viel Ahnung von C/C++ habe, kann das auch völliger Quatsch sein, probier es halt einmal.
Delphi-Quellcode:
type
  P_O2DRESULTOBJECT = ^T_O2DRESULTOBJECT;
  T_O2DRESULTOBJECT = packed record
    iModelId: integer;
    iPositionX: integer;
    iPositionY: integer;
    fRotation: single;
    fMatchQuality: single;
  end;

  P_O2DRESULT = ^T_O2DRESULT;
  T_O2DRESULT = packed record
    bOverallPass: T_BOOL;
    fOverallMatchQuality: single;
    iNrOfObjectsFound: integer;
    iObjectsFoundListSize: integer;
    objectsFoundList: P_O2DRESULTOBJECT;
    iImageSize: integer;
    image: PByte;
  end;
  
var
  O2dGetLastResult: function(iConnectionID: DWord; var decodingResult: T_O2DRESULT): integer; cdecl;
  
 procedure demo_O2dTriggerWithResults(con_id: Cardinal; const filename: string);
 const
   maxNumberOfObjects = 5;
   maxImageSize = 308278;
 var
   i, retval: integer;
   _result: T_O2DRESULT;
   detail: array[0..maxNumberOfObjects - 1] of T_O2DRESULTOBJECT;
   image: PByte;
 begin
    _result.iObjectsFoundListSize := maxNumberOfObjects;
    _result.objectsFoundList := @detail[Low(Detail)];
    image := AllocMem(maxImageSize);
    try
      _result.image := image;
      _result.iImageSize := maxImageSize;
      retval := O2dGetLastResult(con_id, _result);
      for i := 0 to result.iObjectsFoundListSize - 1 do
        (* irgendwas machen *)
    finally
      FreeMem(image);
    end;
 end;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat