Delphi
我希望在我的Delphi项目的RC文件中使用dot(。)作为资源条目。但是,Delphi的BRCC32.exe在资源命名中不允许使用dot(。)。自Delphi 2010以来,我们可以在 项目中指定“使用资源编译器”选项|资源编译器 切换到支持点命名的RC.exe(Windows SDK资源编译器) / p> 使用RC.exe作为资源编译器,可以为点号命名。但是,我
..
如何将 \Device\HarddiskVolume3\Windows 其对应的虚拟路径? (例如c:\Windows) 解决方案 我个人喜欢本机方式: 函数GetHDDDevicesWithDOSPath:TStringlist; var i:integer; root:string; device:string; buffer:string;
..
我正在寻找一种用反转颜色绘制文字的方式。 对于形状,我们可以将 TPenMode 设置为 pmNot ,但是我们不能这样做为文本。 解决方案 这样做: 程序DrawTextNOT(const hDC:HDC; const Font:TFont; const Text:string; const X,Y:integer); begin with TBitmap.Create
..
我知道安装程序可以在安装过程中为应用程序设置文件关联,因此,如果您有自己的应用程序打开的文件类型,将进行设置,同时关联的文件也将有自己的图标在Windows中您定义的内容。 无论如何,我希望能够直接从我的应用程序中的首选项表单设置/删除我的应用程序将使用的文件类型。 需要哪些方法来做到这一点,我正在考虑到注册表的路线,但是我们正在使用什么键/值等,如果注册表是方式去? 欣赏一些建
..
可能重复: 翻译应用程序 使用delphi xe2编写我的应用程序国际化的最佳方式是什么? 我看过 stringtable 资源,但我很担心,因为我感觉到实现可能是耗时和费力的。 有没有其他同样有效的方法来做到这一点? 解决方案 可能不是翻译的最佳工具,但是我使用的是 GNU Gettext 年份。 这个过程很简单: 你运行dxgettext提取字符串 你
..
键入 TDelphiSignature = record 签名:LongWord的数组[0..3] 版本:string; 结束 const DelphiSignature:TDelphiSignature的数组[0..2] =( (签名:($ 384F3D26,$ B83782C2,$ 034224F3,$ 833A9B17);版本: Delphi Entreprise'), (
..
我们希望使用Delphi 2009和Interbase中的Unicode,并发现将字符编码从WIN1252切换到UNICODE_FSS或UTF8,我们首先必须在所有数据模块中用TWideStringField替换所有的TStringField实例。对于约60个数据模块,我们不能简单地在一个周末做到这一点。我可以看到迁移策略只有两个选项: 找到一个解决方法,允许使用现有的TStringFiel
..
解决方案如果我想在Delphi中编写一个简单而有意义的Web服务器,那么Delphi是否有IntraWeb的替代方案? 当我也在做Delphi工作时,我一直在做Cold Fusion,PHP和ASP工作,发现很奇怪,我在编写服务器端的脚本会被一遍又一遍地解析,而真的Delphi快速编译器!所以我出去了,开始 http://xxm.sf.net/ 它提供了一种组合HTML和对象Pascal进入相同
..
检查这个简化的样本(真实场景是不同的),我想设置一个对象的嵌套属性的值,在这种情况下设置一个 TLabel p2:TRttiProperty; c:TRttiContext; begin c:= TRttiContext.Create; try p:= c.GetType(Label1.ClassInfo).GetProperty('Font'); p2:= c.GetType(p.P
..
我想知道解决这个问题的基本方法。还要特别感兴趣的是Pascal的具体解决方案。 让我们说一个有2个输入的表单:'InputVARIABLE'和'InputVALUE'。 在InputVARIABLE区域中,用户键入要更改的变量的名称。在InputVALUE区域中,用户键入该变量的值。 因此,对于inputtexts的“color”和“blue”:如何在不使用IF语句的情况下更改变
..
我需要为应用程序添加一些插件功能,并且能够动态加载和打开插件。 在我的应用程序(主窗体)中,我有以下代码: 程序TfrmMain.PluginClick(发件人:TObject); Var DllFileName:String; DllHandle:THandle; VitoRunPlugin:procedure(AppHandle,FormHandle:HWND);
..
在Delphi 2009(或更早版本)中,如何在代码中检查“Align”编译选项? IFOPT 指令似乎只能使用纯开关( {$ IFOPT A4} 不编译)。 我找不到等效的常量或这样的定义( {$ IF Align = 4} 等等) 解决方案 您可以通过定义具有已知打包规则的记录并使用SizeOf进行检查。在德尔福2009年测试: type TTestRec =
..
我正在为复杂的应用程序编写一个模块,我的模块应该处理由web服务器返回的json响应。所以,我的问题是如何解码这样的文本: \\\П\\\о\\\и\ u0441\\\к \\\п\\\о \\\ф\\\а\\\м\\\и\\\л\\\и\\\и,\\\и\\\м\\\е\\\н\\\и(\ u043e\\\т\\\ч\\\е\\\с\\\т\\\в\\\у 这是西里奇文
..
我想在delphi-2009中将带有参数的查询执行到线程安全的类。 我在谷歌浏览,但是我没有找到 谢谢 解决方案 我发现大多数数据库API在连接级只有线程安全。 Firebird可能有所不同,但使用InterBase几个(8+)年前,它不是线程安全的。更新:我已经验证过Firebird只有线程安全连接级别。 这意味着您通常需要避免同时使用多个线程的单个连接。针对给定连接的
..
我知道这个问题从此之前已经过去了(例如:显示自定义消息对话框的最佳方式),但我仍然找不到我想要的。 我开始像这样: 类函数TAttracsForm.MessageDlg(const aMsg:string; aDlgType:TMsgDlgType; Buttons:TMsgDlgButtons; aCaptions:String of array; aDefault:TMsgDlgB
..
我正在尝试在一个RawByteString上运行AnsiStrings.StringReplace,它持有一个数据块,其中一些数据需要被替换。它会工作,除了里面的StringReplace它将我的字符串转换为一个PAnsiChar,所以搜索结束一旦遇到blob中的第一个#0字节,bail结束。 我正在寻找一个像StringReplace一样的例程,但是可以安全地使用可能包含空字节的blob。
..
我有一些需要定期执行的数据库优化例程。我正在使用一个TTimer,但是主VCL冻结并且非常黑客...我想知道最好的方法是使用低CPU消耗并执行这些例程。我认为将例程放在具有低线程优先级的单独线程中是最好的方法。 任何想法? 解决方案 如果可能的话,只需编写所有的线程来完成在特定时间完成的最重要的事情。如果您不清楚您正在做什么,线程优先级可能导致严重的性能问题 。相反,只需对您的线程进
..
我有一个班级在一个单位。通常,当我改变其方法的算法时,我必须重新编译并提供整体补丁。 我认为使用DLL创建类的实例。在delphi.about.com中搜索后,我发现不用使用DLL,我可以使用BPL。它是Delphi的一个DLL。问题是几乎所有的例子,我发现只是告诉如何导出一个功能。 我想动态加载BPL,每当我更换BPL,我可以得到类的最新算法,不仅仅是我导出的函数。 文章我已阅读:
..
我有一个Delphi XE2项目来处理大量的计算。 在我的项目中,我共有1290个数字编辑,340 标签的数量,330 面板的数量,16个 TabSheet 。对于每个编辑,有 OnChange , OnDblClick , OnEnter 和 OnExit 事件。 我必须处理总共1034个变量的数字。我刚刚设计了 Form ,而不是添加这些计算逻辑。现在我的 .pas文件成为 62.
..
TEdit没有 OnResize 事件。 编辑框可以在不同时间调整大小,例如: 更改代码中的宽度/高度 缩放为DPI缩放的表单 改变字体 我确定别人我不知道。 我需要一个事件来知道编辑框何时改变了它的大小。是否有Windows消息我可以子类化编辑框和抓取? 解决方案 OnResize被声明为TControl的受保护属性。你可以使用所谓的“饼干”类来暴露它。这是一
..