Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Konvertierung c++ zu delphi (https://www.delphipraxis.net/158408-konvertierung-c-zu-delphi.html)

Drag0n 16. Feb 2011 14:43

Konvertierung c++ zu delphi
 
Hallo zusammen

hab ein kleines problem bei dem einbinden einer usbcam.dll aus c++ in delphi.
Ich hoffe mir kann jemand helfen.

Code:
typedef int (WINAPI *SetCallback)(IN INT nCamIndex,IN INT nMode,IN LONG (CALLBACK *pCallbackFunc)(BYTE *pBuf, LONG lBufferSize, PVOID pContext),IN VOID *pCBContext);

typedef SetCallback PSetCallback;
das ganze in delphi
Delphi-Quellcode:
TCallback=function(pbuf:pbyte;lBufferSize:long;pContext:pointer):long;stdcall;
SetCallBack=function(nCamIndex,nMode:integer;pCallbackFunc:TCallback;pCBContext:pointer):Integer;stdcall;
die callbackfunction mit dem aufruf

Code:
long CALLBACK MyCallbackFunc(BYTE * pBuffer, long lBufferSize,PVOID pContext )
{
 //gibt image aus
}

nStat=SetCallback(0,1,MyCallbackFunc,NULL);
und das ganze in delphi:

Delphi-Quellcode:
function MyCallbackfunc(pBuffer:pbyte;lBufferSize:long;pContext:pointer):long;
begin
  //gibt image aus
end;

nstat:=SetCallback(0,1,@MyCallBackFunc,Nil);
das problem ist jetzt das in der Mycallbackfunc die parameter pBuffer und lBufferSize Nil bzw 0 sind die aber eigentlich den buffer von einem bild + den buffersize enthalten müsten.

Ich scheine da einen fehler in der Konvertierung zu haben.
Nach einigem nachlesen habe ich gefunden das die Callback funktion nicht in einer Klasse sein darf weil sonst der funktionspointer anders ist aber das hat nicht geholfen.

Ich hoffe jemand sieht oder kennt das problem.

Drag0n 17. Feb 2011 07:10

AW: Konvertierung c++ zu delphi
 
Schade das mir so schnell keiner helfen konnte aber hab das problem nach langem suchen endlich gefunden.

Delphi-Quellcode:
function MyCallbackfunc(pBuffer:pbyte;lBufferSize:long;pContext:pointer):long; stdcall;
begin
  //gibt image aus
end;
die funktion als stdcall und ausserhalb einer klasse dann werden die richtigen parameter übergeben.


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:59 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