我正在创建如下所示的Cdll。#ifdefTEST_EXPORTS#defineTEST_API__declspec(dllexport)#else#defineTEST_API__declspec(dllimport)#endif#ifdef__cplusplusextern"C"{#endif/*funacceptanargumentstatus_callbackwhichisafunctionpointer*/TEST_APIvoidfun(void(*status_callback)(int));#ifdef__cplusplus}#endiffun实现为:voidfun(vo
如何检索应用程序AudioSession列表(如在Windows音量混合器中)并手动更改一个应用程序(例如Mozilla)的音量(C++、Delphi)?当您开始说话时,Skype会做同样的事情(降低其他应用程序的音量)。提前致谢! 最佳答案 要枚举AudioSession,您必须使用IAudioSessionManager2界面并调用GetSessionEnumerator方法,这将返回一个IAudioSessionEnumerator接口(interface),您必须从这里调用GetSession返回IAudioSessionC
在Delphi中,C++的dynamic_cast、reinterpret_cast和static_cast运算符(尤其是在对象上使用时)的等效项是什么? 最佳答案 重新解释_cast大多数时候,在Delphi中,转换是reinterpret_cast,即一种类型的位和字节被重新解释为另一种类型,例如Integer(myEnum)或Pointer(MyDynamicArrayVar)。有些转换会截掉位,即Integer(MyInt64)会截掉Int64的高32位,而低32位的高位会变成新的符号位。一些Actor阵容扩大,例如Inte
我需要将我的C++代码迁移到Delphi。在C++代码中有许多检查来检查给定句柄(HANDLE)是否为NULL。可以在Delphi中使用的等效常量是什么?Delphi中的null似乎与C++中的NULL不同。 最佳答案 在WindowsC++头文件中,NULL是一个扩展为0的宏.这意味着NULL可以在数字和指针上下文中使用,因为C++语言支持这种用法。但是,对于Delphi,值0用于数字上下文,值nil在指针上下文中使用。WindowsHANDLE值在Delphi中声明为数字类型,因此代替C++NULL你应该使用0在德尔福。
我有C++背景,对类、指针和内存地址相当了解。但是,对于Delphi,我发现自己很困惑。我知道,当您在函数/过程的var部分中声明特定类型类的变量时,您真正声明的是指向该类的指针。例如,下面的Delphi和C++大致相同,都在堆上分配MyObject类所需的内存量。//DelphiprocedureBlah.Something();varo:MyObject;begino:=MyObject.Create;o.Free;end;//C++voidBlah::Something(){MyObject*o=newMyObject();deleteo;}在C++中,使用指针(和引用)允许在类
有没有办法在Win32的Delphi中使用由win32dll导出的C++类?是否有其他方法来实现类似的东西(COM、.NET等)? 最佳答案 你不能导入一个类。您只能导入函数。RudyVelthuishaswrittenatlengthonthetopic.尽管您不能直接使用导出的C++类,但他描述了一些实现相同效果的技术:“扁平化”对象,因此在调用方不再有对象,只有一个指针连同其他参数一起传递给DLL,用于包装对象方法的一系列函数。编写包装器非常简单,尽管它可能很乏味。使用纯虚类。WindowsC++编译器和Delphi通常具有相
我想确定给定组件在我的应用程序中属于哪种形式。Parent和Owner属性都不能假定为表单本身,所以我不能简单地使用它。我想我可以递归地遍历Parent属性,直到我得到从TForm派生的东西,但是有没有更好的方法来做到这一点?我使用了搜索功能,但找不到针对我的问题的任何内容。顺便说一句,我正在使用BorlandC++Builder(标记为Delphi,因为大多数VCL用户似乎都用Delphi编写,而我读Delphi代码也很好)。提前致谢! 最佳答案 您可以在Forms单元中使用GetParentForm-VCL也经常使用它。它执行您
我正在尝试将一个巨大的项目从C++翻译成Delphi,并且我正在完成翻译。我留下的东西之一是'\0'怪物。if(*asmcmd=='\0'||*asmcmd==';')其中asmcmd是char*。我知道\0在C++中标记数组类型的结尾,但我需要知道它是一个字节。是0吗?换句话说,下面的代码是否等同于C++行?if(asmcmd^=0)or(asmcmd^=';')then...其中asmcmd是PAnsiChar。你不需要知道Delphi来回答我的问题,但告诉我\0作为字节。那也行。:) 最佳答案 '\0'等于0.它是C的遗留物,
我是一名VisualC++开发人员,但在我的项目中有一些Delphi组件。我需要调试Delphi组件来解决一些问题。在调试中生成一个DLL文件,然后在Delphi中开始调试,必须具备哪些条件? 最佳答案 在Delphi7中你会这样做:项目|选项|编译器|调试|调试信息(检查)然后去运行|参数|托管应用程序并输入您的exe的名称。在您的DLL代码中添加一些断点,然后单击运行。您的exe将被加载,您可以在DelphiIDE中调试DLL部分。如果您的exe已经在运行,请单击运行|附加到进程--我对此进行了测试,发现我还需要在Delphi7
我正在尝试从OracleSQLServer获得查询结果,然后将其插入StringGridShowPapers桌子。我有SQLConnection1(DBExpress连接)设置和工作,SQLDataSetPapers数据集和查询SQLQueryPapers.当我运行此过程时,查询似乎什么都没有返回:procedureTFormOperator.TabSheetShowPapersShow(Sender:TObject);beginSQLQueryShowPapers.SQL.Text:='SELECT*FROMpapers';SQLQueryShowPapers.Open;SQLQuerySh