我有一些MSVC++编译的DLL,我为其创建了类COM(精简版)接口(interface)(抽象Delphi类)。其中一些类具有需要指向对象的指针的方法。这些C++方法是使用__thiscall调用约定(我无法更改)声明的,这与__stdcall类似,只是传递了一个this指针在ECX寄存器上。我在Delphi中创建类实例,然后将其传递给C++方法。我可以在Delphi中设置断点,并看到它命中了我的Delphi类中公开的__stdcall方法,但很快我得到一个STATUS_STACK_BUFFER_OVERRUN并且应用程序必须退出。是否可以在Delphi方面模拟/处理__thisca
在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通常具有相
我是一名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
我们有一个iOS和Android应用程序,它使用Datasnap从终端用户的手机/平板电脑连接到他们的DatasnapWindows数据库服务器。一切正常,只是现在Apple拒绝了我们应用程序的新版本,因为它不兼容IPv6。好的我们的Firemonkey移动应用程序(DelphiSeattle)允许最终用户设置他们自己的服务器配置(IP和端口)。他们必须在他们自己的服务器中运行WindowsPC服务器应用程序,因此,没有任何主机名。他们只知道他们的服务器公共(public)IP地址。服务器应用程序安装在一台简单的WindowsPC中。不是Web服务器、域等,因此没有任何服务器主机名,而
我正在尝试通过实现iOS11中可用的两个UITableView委托(delegate)方法,在Delphi中为UITableView添加交换操作:leadingSwipeActionsConfigurationForRowAtIndexPathtrailingSwipeActionsConfigurationForRowAtIndexPathobjective-c:-(nullableUISwipeActionsConfiguration*)tableView:(UITableView*)tableViewleadingSwipeActionsConfigurationForRowAt
我有一个数据库,想用DELPHI和FIREMONKEYCROSSOVER选择一个条目。但我从未在DELPHI上使用过SQL。而且我无法弄清楚如何使用DELPHI连接到数据库。我不想满手都是组件。它应该是一个简单的连接,就像使用PHP一样。我使用XAMPP-mySQL。假设我们有一个数据库“db_x”,其中有一个表“users”,在该表中有以下条目:姓名:迈克尔;姓氏:施耐德;年龄:22。数据库位于“localhost”或其他地方,登录名是“root”,密码是“rootpw”。要在PHP中连接到数据库,我们使用:mysql_connect("localhost","root","root