草庐IT

Delphi7_VCL

全部标签

c++ - Delphi:使用调试器调用 C dll 函数需要 15 秒,没有调试器需要 0.16 秒。为什么?

我有以下设置:用DelphiXE5编写并内置Debug64位的Delphi命令行应用程序。用MicrosoftVisualStudio2013编写并内置64位版本的Cdll。Delphi命令行应用程序调用Cdll中的函数。意外情况:在DelphiXE5IDE中调试Delphi命令行应用程序时,Cdll函数调用需要15秒。当直接启动相同的Delphi命令行应用程序(没有IDE,没有调试器)时,Cdll函数调用需要0.16秒。Delphi命令行应用程序源代码:programDelphiCpplibraryCall;{$APPTYPECONSOLE}{$R*.res}usesSystem.S

c++ - 可以将带有类的 C++ 头文件转换为 Delphi 单元吗?

我有一个C++*.h文件,其中包含三个类。头文件用于访问DLL。我几乎没有C++知识。但是,我似乎从某个地方记得您不能将*.h文件转换为其中包含类的Delphi单元。这是真的吗?如果不是这样,并且头文件中的类不是问题,那么将这些类转换为Delphi的一般方法是什么? 最佳答案 C++类,就像Delphi类一样,不是为二进制互操作而设计的。Delphi类只能导出供其他Delphi代码使用,然后只能在一个包中,并且只有在使用运行时包时,并且只有当所有模块都使用相同版本的Delphi时。同样,C++类只能通过使用编译DLL的同一工具链编译

c++ - 如何像 Delphi 应用程序一样创建独立的(没有 DLL 文件依赖项)C++Builder 控制台应用程序?

当我创建一个Delphi控制台应用程序时,我可以部署生成的EXE文件,而不必担心外部DLL文件。但是如果我创建非常简单的C++Builder(2007版)控制台应用程序(无VCL)EXE文件需要CC3280MT.dll文件才能运行。如何避免我的C++Builder控制台应用程序需要CC3280MT.dll文件?即使是这个简单的代码也会导致这种依赖:#include#pragmahdrstop#pragmaargsusedintmain(intargc,char*argv[]){cout 最佳答案 在项目选项中,取消选中链接器选项“动

c++ - 将 Delphi 代码转换为 C++ 的最佳方法?

我有一个用Delphi编写的应用程序,它在Delphi2007中编译。我认为它最初是用Delphi7编写的。无论如何,我需要将所有核心非GUI代码转换为C++,因为我想发布该软件的Mac版本。最好的方法是什么?我可以采取任何捷径来加快这个过程吗?编辑:代码编译为native代码,而不是.NET。 最佳答案 简单的回答:如果不完全重写,您根本无法将重要的Delphi代码移植到C++。C++的对象模型与Delphi的非常不同。它没有像TObject这样所有其他对象都从中派生的基类,并且它缺乏对Delphi代码通常认为理所当然的许多RTT

c++ - 通过 Delphi 访问 Windows API 是否会降低性能?

几年前,我有过使用旧的C++Win32API进行编程的经验,最近我参与了Delphi的开发。我立即认出了WindowsAPI中的许多函数(例如,CreateThread、CreateWindowEx等)。我发现Embarcadero的文档不完整(至少可以这么说),通常引用Microsoft网站获取文档。我可以补充一点,所有函数都是用C语言定义的,这让非C语言的人很难理解(但对我来说更容易)。我想知道的是-假设Delphi函数签名与Microsoft提供的C函数签名相同-对DelphiWindowsAPI函数的调用立即调用WindowsAPI函数,或者它是否调用了一个相同的Delphi函

c++ - Delphi thiscall 调用约定

我需要调用非静态C++成员函数因此我需要使用thiscall调用约定。Delphi不支持这种调用约定。因此,在调用任何成员函数之前,我必须手动将参数压入堆栈。asmmovecx,myClassPointerend;这很好用,但我正在寻找更好的方法。目前,我每次都在调用函数之前使用类指针调用asm代码,这不太好。因为我不是Delphi专家,我想知道您是否可以声明自己的调用约定或自动调用那些thiscall类方法。 最佳答案 您有以下选择:在asm中编写适配器以调用该函数。这是您当前的解决方案,正如您所知,这种方法既脆弱又笨拙。编写一个

c++ - 面向 Delphi 开发人员的 Qt

有人知道为Delphi/C++Builder/VCL开发人员解释Qt的书籍或教程吗?具有该背景的开发人员学习Qt的最佳方法是什么?我对如何使用Qt在Delphi中完成我知道如何完成的事情特别感兴趣。例如,Qt相当于DelphiFrames是什么?Forms/Frames继承怎么样?我应该使用QtDesigner、QtCreator还是手动编写代码来完成此类任务?另一件事是QtWidgets和对象生命周期。Qt是否负责小部件和对象的销毁,还是应该由程序员手动完成?或者Qt可能对某些类型的对象执行此操作但对其他类型不执行此操作?顺便说一下,我确实懂C++,所以语言本身不是问题。我关心图书馆

windows - 使用 Delphi 2007 从虚拟文件夹加载文件

我正在尝试从Windows虚拟文件夹之一(例如,相机或iPhone图片文件夹)加载文件的内容。下面是我用来解决这个问题的一些示例代码:procedureTfrmForm.ButtonClick(Sender:TObject);VarDialog:TAttachDialog;Enum:IEnumShellItems;Name:LPWSTR;Item:IShellItem;Strm:IStream;OStrm:TOLEStream;FStrm:TFileStream;Result:HRESULT;Buf:Array[0..99]OfChar;Read:LongInt;beginResult

windows - 在Delphi中使其他应用程序窗口半透明

大家好我在网上搜索了有关这是否可行的任何说明,但无济于事。我需要编写一个允许我选择另一个应用程序的应用程序,并通过这样做使所选应用程序半透明并位于顶部(如重影图像覆盖)。使用Delphi完全可以做到这一点吗?我正在使用DelphiXE和Lazarus。如果有人能指出我从哪里开始的大体方向,我将非常感激。提前致谢 最佳答案 您可以这样做但不推荐,因为这种行为必须由自己的应用程序处理。无论如何,如果您因为您有充分的理由这样做而坚持,我在这里留下代码来设置窗口的透明度并使窗口成为最顶部,只是为了展示如何做到这一点。透明度您必须使用SetW

windows - 几个版本的Delphi

出于与具有不同应用程序版本的客户相关的原因,我需要在笔记本电脑中维护多个版本的Delphi(7、XE7、XE8、XE10.1Berlin和XE10.2Tokyo)。我主要关心的是编译和链接期间的PATH变量和问题。会有什么问题吗?我需要改变什么吗?欢迎提出任何建议。 最佳答案 我在单个虚拟机中安装了从7到XE8的所有版本的Delphi,在另一个虚拟机中安装了版本1到6(我的Delphi“博物馆”:))。Delphi“博物馆”是一个WindowsXP虚拟机,可以避免较旧版本的Delphi在较新的Windows版本中出现的问题。Delp