草庐IT

delphi-2009

全部标签

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 命令行脚本将文件夹重命名为当前月份 -3(例如 2009-04 至 2009-01)

使用YYYY-MM格式将当前月份的文件夹重命名为当前月份-3的Windows命令行脚本是什么?例如:c:\myfiles\myFolder\应该变成:c:\myfiles\2009-01\ 最佳答案 对于我的语言环境,我需要一些不同的东西。我想您还需要处理个位数的月份。setlocal@REMexample:Thu06-11-2009setstamp=%DATE%@REMgettheyearsetyear=%stamp:~10,4%@REMexample:2009@REMgetthemonthsetmonth=%stamp:~4,2

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

windows - 如何获得 Windows 版本是 Vista 和 Delphi 上的 XP?

有什么方法可以知道我们正在使用哪个版本的Windows?我需要在WindowsXP中将图像设置为TExtButton,而在Windows7中则没有图像。它应该自动完成。 最佳答案 检查SysUtils.Win32MajorVersion(在Delphi7中,您需要将SysUtils添加到您的uses子句中,如果它不存在的话-更高版本会自动添加)。最简单的方法是像往常一样在IDE中分配Glyph,如果您在Vista或更高版本上运行,则清除它:ifSysUtils.Win32MajorVersion>=6then//WindowsVis

windows - 如何在 Delphi 中编写 Windows Shell 命名空间扩展?

首先,抱歉我的英语不好......我想使用命名空间扩展(NSE)将虚拟文件夹添加到Windows资源管理器,并且我希望用户能够打开此虚拟文件夹以探索某些路径(例如,c:\test).我如何使用Delphi执行此操作?谢谢。 最佳答案 开始的地方是MSDN文档:IntroductiontotheShellNamespace.当然,这是从C++的角度编写的,但将其映射到Delphi并不难。此类任务的另一个优秀资源是代码项目。例如:TheCompleteIdiot'sGuidetoWritingNamespaceExtensions-Pa

windows - Delphi:如何知道 TEdit 何时更改大小?

我需要在编辑框改变大小时更新它周围的项目。TEdit没有OnResize事件。编辑框可以在不同时间调整大小,例如:在代码中更改宽度/高度表单缩放以进行DPI缩放字体已更改我确定还有其他我不知道的。我需要一个事件来知道编辑框何时改变了它的大小。有没有我可以将编辑框子类化并抓取的Windows消息? 最佳答案 OnResize声明为TControl的protected属性。您可以使用所谓的“cracker”类公开它。不过,这有点像hack。typeTControlCracker=class(TControl);...procedureT