gpt4 book ai didi

delphi - Delphi中不同单元中具有相同名称的常量

转载 作者:行者123 更新时间:2023-12-03 15:48:13 25 4
gpt4 key购买 nike

我使用的是 Delphi 6。我创建了一个项目,并在其中添加了两个单元 Unit1Unit2
我有一个名为 的常量XML_DIAGRAM='Diagram_Data' 作为 XML 节点的常量,我还在单元 Unit2 中声明了相同的常量,但具有不同的值“Diagram_Name”,并且我在 main 中使用这两个单元单元。我的问题是,当我访问常量 XML_DIAGRAM 时,它始终包含单元 Unit2 中的常量值。
如果在多个单元中声明同名常量,那么当用户发出请求时,Delphi 如何决定从哪个单元获取常量?

我的代码:

unit Unit1;   
const
DIAGRAM = 'Diagram_Data';
end.


 unit Unit2;         
const
DIAGRAM = 'Diagram_Name';
end.


uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,Unit1,Unit2;

最佳答案

If the constant with same name is declared in multiple unit then how Delphi decide from which unit the constant to take when user make request?

documentation解释了如何处理这种情况:

The order in which units appear in the uses clause determines the order of their initialization and affects the way identifiers are located by the compiler. If two units declare a variable, constant, type, procedure, or function with the same name, the compiler uses the one from the unit listed last in the uses clause. (To access the identifier from the other unit, you would have to add a qualifier: UnitName.Identifier.)

因此,在问题的场景中,DIAGRAM 引用了 Unit2 中定义的符号。这是因为 use 子句按照 Unit1、Unit2 的顺序列出单位,并且 Unit2 最后列出。如果颠倒 uses 子句中的顺序,Unit2, Unit1,则 DIAGRAM 引用 Unit1 中定义的符号>.

该文档还展示了如何使用完全限定名称来明确您想要的符号。您可以编写 Unit1.DIAGRAMUnit2.DIAGRAM

最后要指出的一点是,在不同的单位中使用相同的名称可能会造成困惑。最好找到一种编写代码的方法来避免这种情况。

关于delphi - Delphi中不同单元中具有相同名称的常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24906789/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com