问题标签 [dfm]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
delphi - Delphi "EClassNotFound" 错误和损坏的 DFM 可能性
我在我的 Delphi 2007 项目中遇到了一系列级联的“EClassNotFound”错误。似乎不是由缺少 Name 属性值引起的,因为通常情况下,虽然在初始化部分添加 RegisterClass(XXX) 修复了手头的 EClassNotFound 错误,但另一个似乎无限期地跟随它。
我终于在文本编辑器中打开了 DFM 文件,它看起来可能已经损坏(表单元素名称中有很多非 ASCII 字符,与我在 DFM 文件中看到的相比,看起来非常“非结构化” )。(我会在这里发布相同的内容,但不确定是否可以,使用非 aSCII,所以会推迟)。
表单加载正常,似乎编译/语法检查也可以,但是一旦我运行它,麻烦。
回到 SVN 中的早期版本,它看起来已经处于这种状态有一段时间了,这让我认为要么 A)DFM 文件不是我的问题,要么 B)Delphi 表单流式处理是相当错误的-宽容/健壮(奖励问题:它是什么?)。
如果 DFM 文件是问题所在,并且已损坏,则回滚将必须是回滚方式,这将是昂贵的。鉴于 IDE 仍然可以加载它,是否有任何实用程序可以清理文件?
或者,我是否完全脱离了 DFM 作为主要嫌疑人的基础?
感谢大家的投入。忘记了带有 DFM 文件的二进制/文本选项,所以这很有帮助。看起来 DFM 本身没有损坏。
不过仍然有 EClassError 问题。回复:它缺少属性值,或引用不存在的属性等,还有一个问题:错误的类是给出的(当前是 TnxSqlUpdateObject,但如果到目前为止的经验是一致的,可能更多的等待时间)通常/总是真正的“罪魁祸首”类/对象?
例如,现在我的主窗体有四个对 TnxSqlUpdateObject 的引用,而这些引用实际上是放在窗体上的。如果我将 RegisterClass(TnxSqlUpdateObject) 放在初始化部分,它对于 EClassNotFound 错误运行良好,但随后会继续到下一个错误(在本例中为 TStringField)。
在这种情况下,我已经重新安装了 NexusDB 组件,并且还使用我认为可能是问题的一些组件构建了一个新项目。它编译并运行良好,直到我从我的真实项目中添加了另一种形式(不幸的是,它又引用了很多其他形式)。
所以,听起来我真正的问题是如何有条不紊地诊断和修复任何和所有 EClassNotFound 错误?
delphi - 将带有特殊字符的 Delphi DFM 迁移到 D2009
我有许多 Delphi 表格,其中我们使用了几个特殊字符——“度”符号和“欧姆”符号。这些字符用于保存在 DFM 文件中的标签标题中,不会在运行时生成或修改。回到我们第一次设计这些形式的时候,度数符号很简单,因为它在 Ansi 字符集(代码 176)中,但欧姆符号需要希腊字符集才能与代码 217 一起使用。幸运的是(我们发现)我们发现的所有其他字符需要(字母和数字)与希腊字符集配合得很好。
现在我们希望这些表单在 D2009 中看起来相同。度数符号看起来很好,但欧姆符号显示“Ù”,因为 dfm 文本是“Caption = 'Typed in Ohms - 1234 '#217”。我发现我可以编辑表格以输入正确的 unicode 欧姆符号(8486),但当然这会丢失为“?” 回到 D7 时。理想情况下,我想告诉 D2009 继续使用带有表格的希腊字符集,以便 dfm 中的 #217 映射到欧姆符号。这可能吗?它似乎忽略了“GREEK_CHARSET”的 Font.Charset 设置。我发现了一种解决此问题的肮脏方法,即遍历所有组件并执行“StringReplace(S,'Ù',OhmsChar,[rfReplaceAll])”,但这太可怕了,肯定有更好的方法吗?
谢谢,布赖恩
delphi - Delphi 有时会将文本格式文件 (DFM) 恢复为二进制格式吗?
我们的 Delphi 7 开发团队以文本模式存储表单文件 (dfm),并使用源代码控制系统 (Subversion) 来跟踪更改。
有时,我们注意到一个表单文件在修订之间返回二进制格式,导致像 TortoiseMerge 这样的差异工具抱怨。
使用 Subversion 更改日志,我可以看到 DFM 文件之前以文本形式存储。软件开发人员从不手动将存储文件格式更改回二进制。
你遇到过同样的事情吗?这是一个已知问题吗?
regex - 正则表达式问题:上下文匹配
我有一个带有分层文本的结构化文件,它描述了 Delphi 中的 GUI(一个 DFM 文件)。
假设我有这个文件,我必须匹配 TmyButton(标记)上下文中的所有“Color = xxx”行,而不是其他上下文中的那些。在 TMyButton-Context 内不会有更深的层次结构。
我试了两天,做了很多很多不同的尝试。这是我的一些不完整的模式:
(我不知道为什么,但我不得不使用“\r\n”而不是“$”......)。我需要把它放在一起,但忽略除其他“object xxx:yyy”和“end”行之外的其他行......
我很高兴能得到一些帮助!
delphi - 修改 Delphi DFM 资源以在显示时关闭?
是否可以编辑 DFM(Delphi 的表单脚本格式)以使表单在显示时自行关闭?
我不在 Delphi 中编码,所以我不熟悉这些表单的工作原理,但似乎我可以将代码(但不是标准的 Delphi 代码)放在表单的OnShow或OnCreate事件中。但是,在尝试了几个语句后,如Close、Exit、FormNameExit、Destroy等将不起作用(将创建一个日志,说明 OnShow 属性的值无效等错误)
关闭表单的正常方式是通过按钮,但按钮没有OnClick事件,只有一个属性“ ModalResult = 1 ”。
有没有办法让窗口在打开时关闭,我可以在表单的 OnCreate 或 OnShow 事件上放置一些标准功能?或者,也许,在表单本身上创建一个复选框,使 ModalResult = 1?(不知道这是否有效)
感谢您的任何建议!
=)
(注意:也许很明显,但我没有来源。)
delphi - Delphi - 为什么 ExplicitWidth 和 ExplicitHeight 不断出现在 .DFM 文件中,它是什么?
我们注意到,在签入更新时,我们的.DFM
文件已添加ExplicitWidth
和ExplicitHeight
属性 - 但我们不知道为什么。
我的问题是:
- 这些属性有什么用?
- 为什么 Delphi 会自动添加它们?
下面是一个显示添加ExplicitWidth
属性的示例:
sql - 是否有可以从 Delphi 表单文件中提取所有 SQL 命令字符串的工具?
对于文档和进一步检查,我想对许多项目中的所有 DFM 文件运行“提取字符串”以查找所有 SQL 语句。有没有可以做到这一点的命令行工具?DFM 文件都是文本格式。
delphi - Delphi:如何锁定 dfm-s 不改变...?
我们很久以前就使用过 Delphi 6。我们的问题是,Delphi 对 DFM 有两个问题:
1.) 当某些链接资源(如DataSet)将被删除时,Delphi 很多时候忘记问您“某些资源已链接,您需要重定向...”。当实际表单未添加到项目中或未打开时,会发生这种情况。
2.)当我们只打开DFM,只看到一些东西时,我们可以改变它(活动TabSheet,表格位置)。然后 Delphi 自动保存表单 - 有时它会删除链接。我们使用 SVN 的另一个问题是,SVN 检测到这些变化......
我们认为我们将 DFM 文件更改为只读,但这也可以防止 SVN 的使用......
所以有人请帮助我们:有一些可以锁定 DFM 以避免更改的 Delphi 扩展(如 gexpert),以及一些其他工具来查看该数据集是否以其他形式使用?
delphi - TFrame 组件:找不到资源
工具:德尔福6 Pro
我使用 Component -> New Component 选项在我的主要组件包中创建了一个新组件,它是 TFrame 的后代。当我在设计期间尝试在表单上绘制组件时,我收到“找不到资源 {组件类名称}”错误。我尝试在“实现”声明之后将行 {$R *.dfm} 添加到组件单元,但没有奏效。(我确实先重新编译了主机包)。我什至尝试从另一帧复制 DFM,然后重命名所有内容以与主机同步,包括 DFM 文件名本身。那也没有用。
我想让 TFrame 后代作为一个组件,而不是仅仅创建一个新的 TFrame 变体,因为我想向它添加在设计时显示在属性编辑器中的属性。有没有办法使这项工作?
提前致谢。
delphi - 帮助基于数据库表的 Delphi DFM 生成(脚手架?)
我是 delphi 的新手,我正在寻找方法来了解有关 delphi 底层技术的更多信息,并在此过程中在我的工作中做一些有用的事情,如果有人有任何提示或看到无论如何我可以改进我的想法,请自由说出你的想法...
我想为 dfms 做某种脚手架,想法如下:我想基于 firebird 数据库表生成 - 具有明确定义的域 - 大部分 Form 。
我认为这个想法太简单了,或者我没有看到使它变得困难的大局,我试图不重新发明井,我在谷歌上查过但没有好的结果,所以如果有人能给我一个方向在这里,我将不胜感激。
更新: @Larry Lustig 谢谢,我没有考虑过 delphi 框架 - 我要查找它们。
我对表单对象/处理和数据库元数据有所了解,但我不熟悉将 delphi 对象序列化到 HD。任何关于序列化和delphi框架的提示(开源,所以我可以看看:))将受到欢迎!