Einzelnen Beitrag anzeigen

mcbain

Registriert seit: 18. Mai 2011
50 Beiträge
 
#1

C++ DLL in Delphi

  Alt 27. Jul 2011, 13:56
Hallo,
ich nutze eine C++ DLL in Delphi, um meinen Ausweisdrucker fernzusteuern.
In der SDK Beschreibung sind die C++ Funktionen beschrieben.
Folgende Funktion funktioniert bspw.:

C++ Code
Code:
void ZBRPRNGetSDKVer(int *major,int *minor,int *engLevel)
Parameters:
major [out]pointer to major version number
minor [out]pointer to minor version number
engLevel [out]pointer to engineering level number

In Delphi nutze ich die Funktion dann bspw. so:
Code:
...
procedure ZBRPRNGetSDKVer(major, minor, engLevel: PInteger); stdcall; external 'ZBRPrinter.dll';
...

procedure TForm2.btnSDKClick(Sender: TObject);
var major, minor, engLevel: PInteger;
    a, b, c: integer;
begin
  major := @a;
  minor := @b;
  engLevel := @c;

  ZBRPRNGetSDKVsn(major,minor,engLevel);
end;

Aber folgendes funktioniert nicht:
C++ Code
Code:
int ZBRGetHandle(HANDLE *hPrinter,char *printerName,int *printerType,int *err)
Parameters:
hPrinter [out]pointer to returned printer driver handle
printerName [in] pointer to printer driver name
printerType [out]pointer to returned printer type value,
err [out]pointer to returned error code

Return Value:
TRUE successful
FALSE failed

In Delphi:
Code:
...
 function ZBRGetHandle(hPrinter: Phandle; printername: PChar;printerType, err: PInteger): Boolean; stdcall; external 'ZBRPrinter.dll';
...

procedure TForm2.btnSDKClick(Sender: TObject);
var hPrinter: Phandle;
    printerType, err: PInteger;
    printerName: Pchar;
begin

  printerName := 'Zebra P430i Card Printer USB';
  ZBRGetHandle(@hPrinter, printername , @printerType, @err)

end;
Kann mir jemand bitte erklären, warum ich da immer den Fehlercode (in @err) zurückbekomme, dass er den Handle auf den Drucker nicht hinbekommt? Was mache ich falsch? Der Drucker heißt definitiv so.

Wäre nett, wenn mir jemand weiterhelfen könnte, vielen Dank.
Gruß
mc
  Mit Zitat antworten Zitat