AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

C++ DLL Header -> Delphi (Struct)

Ein Thema von f.siebler · begonnen am 29. Aug 2007 · letzter Beitrag vom 31. Aug 2007
Antwort Antwort
Benutzerbild von f.siebler
f.siebler

Registriert seit: 15. Jan 2007
Ort: Hamburg
170 Beiträge
 
Delphi 2006 Professional
 
#1

C++ DLL Header -> Delphi (Struct)

  Alt 29. Aug 2007, 15:40
Moin Moin,

so langsam blicke ich bei der übersetzung durch, naja zumindest bei den einfachen dingen

Nun ist bei mir leider ein neues Problem aufgetreten, und zwar das folgende:

Code:
//$e-----------------------------------------------------------------------------------------------
//   @EnrollEx
//
//   Function   :   Enrolls one finger : Creates a template from a set of acquisitions.
//
//   Input      :   pstEnrolledTemplate->dwTemplateSize supplies the buffer size.
//                  (must be at least TEMPLATE_SIZE).
//                  pUpdateFunc points to a callback function that updates execution status.
//                  pvObject points to an object (context) used by pUpdateFunc.               
//               pCompletionRoutine points to a completion routine called when the operation
//               ends. If this callback is defined, this function behaviour
//                  is asynchronous (See Info section)
//               pvContext points to a context passed to pCompletionRoutine.
//
//   Output      :   pstEnrolledTemplate points to the enrolled template if the operation
//                  succeeded.
//
//  Returns      :   RCDone if the operation succeeded.
//               RCFailed if the operation failed.
//               RCAborted if the operation has been aborted.
//               RCNoDevice if no acquisition device has been found.
//               RCNoSensor if there is no sensor or if the sensor is defective.
//               RCOpenFailed if there is a problem while opening the device.
//               RCBufferTooSmall if the buffer named pstEnrolledTemplate->pbyTemplate is too small
//               RCAllocationFailed if a dynamic allocation failed
//               (lack of memory resource)
//
//   Info      :   If pCompletionRoutine is NULL, this function will not return until the end
//                  of the operation, and will consequently have a synchronous behaviour.
//$e-----------------------------------------------------------------------------------------------
DLLIMPORT DWORD EnrollEx( PSTBioTemplateEx const pstEnrolledTemplate,
                      void (*pUpdateFunc)(PVOID,DWORD) = NULL,
                      PVOID pvObject = NULL,
                      void (*pCompletionRoutine)(DWORD,PVOID) = NULL,
                      PVOID pvContext = NULL);

//$e-----------------------------------------------------------------------------
Code:
// Template
typedef struct {
   DWORD dwTemplateSize;
   DWORD dwTemplateID;
   BYTE* pbyTemplate;
} STBioTemplateEx, *PSTBioTemplateEx;
Daraus habe ich bisher folgendes gemacht:

Delphi-Quellcode:
type
  PSTBioTemplateEx = packed record
     dwTemplateSize : DWORD;
    dwTemplateID : DWORD;
    pbyTemplate: array [0..288] of DWORD;
  end;

function EnrollEx (pstEnrolledTemplate : Pointer; pUpdateFunc : Pointer; pvUpdateCOntext : Pointer; pCompletionRoutine: Pointer; pvCompletionContext : Pointer): DWORD; cdecl; external 'BiometricDll.dll';
probleme bereitet mir der erste Parameter, ich habe ich schon die folgende Funktion Variante getestet:

function EnrollEx (var pstEnrolledTemplate : PSTBioTemplateEx ; pUpdateFunc : Pointer; pvUpdateCOntext : Pointer; pCompletionRoutine: Pointer; pvCompletionContext : Pointer): DWORD; cdecl; external 'BiometricDll.dll'; Leider bisher alles ohne Erfolg, ich vermute, dass ich mich irgendwo grundlegend verrant habe
Ich bekomme keine Fehlermeldung zurück, aber das Gerät macht nichts, in anderen Anwendungen geht es wunderbar (Demo Project in C++)

Wer von euch hat ne Idee! Wäre super...! Und mit "Erklärung" wäre es genial..

Besten Dank &
Viele Grüße aus Hamburg
Fabian
sql-praxis.net: sql von der Theorie in die Praxis...
  Mit Zitat antworten Zitat
Benutzerbild von f.siebler
f.siebler

Registriert seit: 15. Jan 2007
Ort: Hamburg
170 Beiträge
 
Delphi 2006 Professional
 
#2

Re: C++ DLL Header -> Delphi (Struct)

  Alt 29. Aug 2007, 16:08
Ist erst mal erledigt, die Größe von

 pbyTemplate: array [0..648] of DWORD; war falsch....

Danke
Viele Grüße aus Hamburg
Fabian
sql-praxis.net: sql von der Theorie in die Praxis...
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#3

Re: C++ DLL Header -> Delphi (Struct)

  Alt 29. Aug 2007, 16:48
Delphi-Quellcode:
type
  TUpdateFunc = procedure(Param1: Pointer; Param2: DWORD); cdecl;
  TCompletionRoutine = procedure(Param1: DWORD; Param2: Pointer); cdecl;

function EnrollEx(var stEnrolledTemplate: STBioTemplateEx; UpdateFunc: TUpdateFunc = nil; pvUpdateCOntext: Pointer = nil;
  CompletionRoutine: TCompletionRoutine = nil; pvCompletionContext: Pointer = nil): DWORD; cdecl; external 'BiometricDll.dll';
Der erste Parameter stEnrolledTemplate war falsch deklariert. Das var bewirkt eine Indirektion, also ist der Typ vom Pointer auf die Struktur aud den Strukturtyp zu aendern.
Die Parameter sind Callback-Prozeduren und ein zugehoeriger Context-Pointer den man bestimmt zu beliebigen Zwecken einsetzen kann. Der duerfte als der Pointer-Parameter der Callback-Prozedur uebergeben werden.
Die Defaultwerte fuer die Parameter kann man auch in Delphi implementieren.
  Mit Zitat antworten Zitat
Benutzerbild von f.siebler
f.siebler

Registriert seit: 15. Jan 2007
Ort: Hamburg
170 Beiträge
 
Delphi 2006 Professional
 
#4

Re: C++ DLL Header -> Delphi (Struct)

  Alt 31. Aug 2007, 16:00
Danke! Läuft alles
Viele Grüße aus Hamburg
Fabian
sql-praxis.net: sql von der Theorie in die Praxis...
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:02 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz