![]() |
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:
das ganze in delphi
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;
Delphi-Quellcode:
die callbackfunction mit dem aufruf
TCallback=function(pbuf:pbyte;lBufferSize:long;pContext:pointer):long;stdcall;
SetCallBack=function(nCamIndex,nMode:integer;pCallbackFunc:TCallback;pCBContext:pointer):Integer;stdcall;
Code:
und das ganze in delphi:
long CALLBACK MyCallbackFunc(BYTE * pBuffer, long lBufferSize,PVOID pContext )
{ //gibt image aus } nStat=SetCallback(0,1,MyCallbackFunc,NULL);
Delphi-Quellcode:
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.
function MyCallbackfunc(pBuffer:pbyte;lBufferSize:long;pContext:pointer):long;
begin //gibt image aus end; nstat:=SetCallback(0,1,@MyCallBackFunc,Nil); 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. |
AW: Konvertierung c++ zu delphi
Schade das mir so schnell keiner helfen konnte aber hab das problem nach langem suchen endlich gefunden.
Delphi-Quellcode:
die funktion als stdcall und ausserhalb einer klasse dann werden die richtigen parameter übergeben.
function MyCallbackfunc(pBuffer:pbyte;lBufferSize:long;pContext:pointer):long; stdcall;
begin //gibt image aus end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:09 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz