问题标签 [delphi-units]
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 - 为什么我的单位是“用不同版本编译的”我自己的文件?
我正在构建一个使用插件的程序。不幸的是,插件框架的动态链接迫使 RTL 和 VCL 从我的项目 EXE 中退出并进入 BPL 版本,并且它们没有启用调试信息。
所以我构建了一个静态链接到我的插件的测试框架,这样我就可以在跟踪代码时实际看到我在做什么。但是现在,每次我尝试重新编译时,都会出现错误:“unit turbu_skills was compiled with a different version of turbu_database.GDatabase”
我以前见过这个错误,但只有当我一直在改变我可能不应该改变的东西时,比如 RTL 或 VCL 库。我不明白为什么它用我自己的代码来做。turbu_skills 和 turbu_database 单元都是我自己编写的单元。GDatabase 是一个全局单例变量,它的类定义我已经好几周没有改变了。任何触发重新编译的更改都会导致此错误,即使我没有触及任何一个单元中的任何内容。
执行完整构建 (SHIFT-F9) 会使其正确编译。但是,如果我在一个单位(任何单位)中按空格键并按F9,我会再次收到错误消息。发生了什么事,我该如何阻止它?这不会发生在主应用程序中,只会发生在测试框架中。
编辑:我有我所有单位的来源。删除 DCU 和类似文件无济于事。将整个项目复制到另一台计算机,删除所有 DCU 并在那里构建没有帮助。我的程序布局和编译器之间存在客观的、可重现的冲突,我想摆脱它。
如果有人想测试它,可以在http://www.turbu-rpg.com/downloads/Turbu_source_setup.exe找到源代码。它需要已安装 JVCL 的 Delphi 2009;安装程序包将负责其余的工作。也许拥有可用的源代码将帮助某人追踪这一点。我当然希望如此,因为无论问题在哪里,它都超出了我的范围。该问题可以在 testing.exe 和 turbu.groupproj 的 turbu.exe 中找到。
编辑 2:原来这是另一个跨单元泛型问题。Grr。我设法编写了一个解决方法。我只是希望他们能尽快解决泛型问题。
delphi - 相互使用的类的循环引用问题
我有以下两个课程:
TcmDataPanel 是(第 3 代)TFrame 后代。它不是直接使用的,而是从它衍生出的多个其他复合组件。
TcmDataConnector 是一个保存这些其他组件的数据库连接信息的组件。
我正在使用 ModelMaker,并正在尝试实现观察者模式,以便在“数据连接器”更改状态时自动更新多个“数据面板”。
这是我的问题:我似乎无法解决“循环引用”问题,因为每个类在接口部分都使用另一个。将相关的“使用”引用放在“接口”部分并不能解决“未声明的标识符”问题,并且将它们放在同一个单元中也不会。现在它们在同一个单元中(我已经在单独的单元中尝试过它们,并且一起尝试过),并且我收到“未声明的标识符:TcmTPDataConnector”错误。
我怎样才能解决这个问题?
================
更新:
现在是周五晚上 9:30 晚上我所在的地方,我完全被困住了。在我发帖后几分钟,你们拯救了这一天!!(晚上!)谢谢!
伙计,我喜欢 StackOverflow ......所以我的朋友在这个疯狂的学习季节。: ) 谢谢你,谢谢你,谢谢你...
delphi - Delphi中如何使用单元文件
我只是想掌握单独的单元以使我的代码更加封装。我正在尝试整理我的方法的公共/私有声明,以便我可以从其他使用testunit
. 在这个例子中,我想hellofromotherunit
公开,但不stickletters
公开。
我似乎无法从其他单位复制私有/公共结构,如下所示:
delphi - 在 Delphi 中从其他单位定义类型
不会像 loren-pechtel 所说的那样工作,问题 是我的 A 和 B 在不同的单位。那么,有没有办法从另一个类中的现有类型定义类型定义?
delphi - 如果删除的单元仍在其他单元中使用,我清理我的使用子句会有什么不同吗?
如果我的uses
子句尽可能小,我个人喜欢它,但在许多应用程序中,真正的大单元(就膨胀可执行文件而言)喜欢Forms
或VirtualTrees
至少在另一个单元中需要。
uses
所以:即使最终没有从项目中删除任何单元,如果我清理我的条款是否会有所不同?如果真是这样,那么是以哪种方式?并且:清理uses
条款是应该尽快完成还是可以等到我偶然发现一个未使用的单元?
delphi - 在 Delphi 中按名称“复制”单元,由组件引用,编译问题
我们正在使用不同供应商的多个组件包,其中两个在其目录结构中都有一个“regexp.pas”单元。
现在的问题是,无论我们编译它们的顺序如何,其中一个都会抱怨使用其他各种单元的错误版本来编译该单元。
有什么办法可以正确处理吗?
delphi - 如何从 VCL 重新编译特定单元?
我想将 QC 中的修复应用到 Delphi 2009 单元(DBClient 碰巧)。我知道我需要将该单元复制到另一个目录并更改副本。然后我如何让 Delphi 编译该单元并使用它来支持已经存在的 DCU?
delphi - 如何从另一个单元运行程序?
好吧,这种n00b问题,但我仍然无法弄清楚。我有一个main
带有程序Discard()
的单元。现在我有另一个单元engine
,我想从它运行Discard()
单元程序main
。我uses
在engine.pas
. 我试图用main.Discard()
但没有好处来调用程序。我究竟做错了什么?
windows - 如何使用 windows 单元关闭Comm、OpenComm、WriteComm 和 ReadComm?
我有一个使用 WinTypes、WinProcs 的旧通讯单元。据我了解,这些也被合并到 Windows 单元中。Windows单元中是否有类似的功能?
delphi - 与单元文件中的单元文件路径一起使用
我有问题。我会试着解释一下。
我有一个单元,它有一个类并且可能会有新的功能。
D3BF4E849ACC45249B990F802EFB1F15\UnitFile1.pas 8DC8977E7A7B469AACFE3CC77CA7075E\UnitFile1.pas
他们都有相同的类:IClass_1 = class
我使用此文件的不同版本的代码编号。
另一个单元文件 (UnitFile2.pas) 使用该单元文件 (UnitFile1.pas)。
此外,第二个单元文件 (UnitFile2.pas) 有不同的版本。
F94C439C822E490DB228F2C16EF2C190\UnitFile2.pas 14CEEFAFF1D64DDD8CBDEDD334D4A3FF\UnitFile2.pas
它们都具有相同的类: IClass_2 = class(IClass_1)
现在问题开始了;
“F94C439C822E490DB228F2C16EF2C190\UnitFile2.pas”需要“D3BF4E849ACC45249B990F802EFB1F15\UnitFile1.pas”
“14CEEFAFF1D64DDD8CBDEDD334D4A3FF\UnitFile2.pas”需要“8DC8977E7A7B469AACFE3CC77CA7075E\UnitFile1.pas”
但是文件名是相同的(我需要这样的系统。所以它们是相同的)。在单元文件中,delphi 不允许我这样写;
在文件 F94C439C822E490DB228F2C16EF2C190\UnitFile2.pas; 在 'D3BF4E849ACC45249B990F802EFB1F15\UnitFile1.pas' 中使用 UnitFile1;
我希望我能说出我的问题。我如何告诉编译器我想使用哪个单元文件及其路径?(我使用 Delphi-7)