delphi

delphi – Coinitialize(零)和CoInitializeEx(0,COINIT_MULTITHREADED)的区别

在一个线程中,如果我使用,是否有区别代替我使用Delphi7,但我认为这个问题可以保留给其他编程语言谢谢你的帮助.解决方法前者以一种将调用线程放入其自己的单线程单元(STA)的方式初始化COM.后者以一种将调用线程放入共享多线程单元(MTA)的方式初始化COM.这两个公寓具有非常不同的语义,特别是在跨线程边界访问COM对象的过程中.不同公寓中的线程必须使用代理来共享COM对象,但COM为您提供同步

通过gsdll32.dll与Delphi 11组合PDF

我已经使用这个代码10多年了,它突然停止工作。该程序读取一个pdf文件列表,并输出一个包含列表中所有文件的pdf文件。它使用gsapi.pas包装单元。多年来,我只需要从Ghostscript.t下载一个更新版本的gsdll32.dll文件,就可以兼容更新版本的pdf文件格式。我发现他们有了一个新的翻译,也许这与此有关?请注意,在Ghostscript中使用等效的命令行本身效果良好。在我看来,他们改变了调用API的方式。如果有任何帮助,我将不胜感激。我确实尝试了添加开关“-dNEWPDF=false”,但

delphi – 如何创建临时文件(0x100)以加速应用程序

当日志变得非常大时,它会更快,更少内存吗?[编辑]好的,我使用下面的schnaader给出的解决方案使用FILE_ATTRIBUTE_TEMPORARY创建文件:这样的文件在创建时获得0x120属性.因此根据系统的临时文件.我还创建了一个带有FILE_FLAG_DELETE_ON_CLOSE标志的文件.所以:此文件没有属性,并且在关闭或销毁应用程序时会自动删除该文件.我没有找到如何组合属性和标志.任何的想法?谢谢解决方法那么,使用CreateFile()方法怎么样?

Delphi的“现在”时间戳有多准确

我将要开展一个项目,该项目需要(相当)准确地为来自定制硬件的传入RS232串行和网络数据加盖时间戳.由于数据来自多个独立的硬件源,我需要为所有数据加时间戳,以便可以对其进行校正/插值到标称时间点.我的直接虽然只是使用内置的Now命令来设置时间戳,但是快速谷歌似乎表明这只能准确到大约50毫秒左右.不幸的是,我读的越多,我就越困惑.在GetTickCount和QueryPerformanceCount

在Delphi中枚举可能的设置值

我在Delphi中有一个计算算法,有许多不同的选项,我需要尝试每个选项组合来找到最佳解决方案.我想知道使用Integer循环枚举它们:这不编译.我想知道的是,是否有任何相当简单的方法可以从Integer转换为Set,如果是这样,它是什么?另一种可能性是将Integer用作位域:然后按位测试成员资格:我已经尝试了这个,并且它可以工作,但感觉就像使用集合会更自然并且更好地使用类型系统.有没有比枚举基础整数表示更好/更安全地枚举所有可能的集合组合?

delphi – TValue string < - >布尔来回

我正和TValue一起玩我在一个空白项目中编写了这段代码:但我无法从字符串转换回布尔值;我在第二行得到一个无效的Typecast异常.我正在使用DelphiXE,但它与DelphiXe6中的结果相同,这导致我得出结论:我使用的是TValue错误.那么请问我做错了什么.解决方法虽然您在问题中给出了布尔值作为示例,但我将假设您真正对枚举类型的完整通用性感兴趣.否则你只需要调用StrToBool.TVa

delphi – 为什么设置表的RecNo属性不会移动到该记录?

我有一个使用BDE访问DBase表的TTable组件.表上没有索引,因此排序顺序是表中记录的物理顺序.如果我读取RecNo属性,它包含当前记录的预期编号.我的印象是,使用这个星座,也可以将RecNo属性设置为移动到相应的记录.但显然这在我的计划中不起作用.所以:我记错了吗?或者我需要做些什么特别的工作呢?解决方法TBDEDataSet仅为Paradox实现RecNosetter.您可能想要尝试这样的通用:

delphi – 如何制作自定义组件属性?

我需要帮助来创建一个控件属性,当你点击它时,它会弹出一个自定义对话框,如设置.就像TPicture一样.任何想法或建议?解决方法如果您的类被用作其他组件的属性,并且您想使用ObjectInspector来调用对话框,那么您必须实现并注册自定义属性编辑器,例如: