gpt4 book ai didi

delphi - 从另一个单元调用没有 "uses"的过程

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

在 C++ 中,如果我必须从另一个命名空间调用函数,例如 foo,我有两个选择:在我的代码上方添加 using namespace foo; 或指定我执行调用时的命名空间,即 foo::myFunction()

在Delphi中,是否有与第二种选择相对应的构造?

最佳答案

不,没有。如果一个标识符(例如函数,如 myFunction )在单元 foo 中声明,然后在不同的单位中,bar ,比如说,你不能使用myFunction不添加foouses implemantation 中的子句或在 interface部分。

一些讨论

假设您有两个函数 MyFuncfoo 中的一和 bar 中的一个。假设您位于 foo 。如果你不这样做add栏至 uses 之一列出,然后 MyFunc将引用foo.MyFunc ,并且您无法访问其他功能。如果添加baruses 之一列出,然后 MyFunc仍会引用本地函数 foo.MyFunc ,但您可以通过写入 bar.MyFunc 来访问另一个。为了减少混淆的风险,您可以选择始终明确并写 foo.MyFuncbar.MyFunc ,而且绝不只是MyFunc

一个常见的场景是这样的:你有一个标识符 ident两者皆 foobar (它们可能非常不同),并且在MyUnit中,你都有foobar在一些uses列表。然后,在 MyUnit , ident将引用 foo.identbar.ident取决于使用子句中最后出现的单位。要使用另一个,您必须明确单位(例如 foo.identbar.ident )。当然,为了减少犯错误的风险,您可以始终明确(例如,即使 foo.ident 最后出现,也可以写 foo ,这样 ident 也指 foo.ident )。

一个常见的错误是混淆 Windows.TBitmapGraphics.TBitmap 。通常,TBitmapGraphics.TBitmap (Windows 单位通常出现在 uses 子句中)。这种困惑已在 SO 得到处理。

关于delphi - 从另一个单元调用没有 "uses"的过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17681237/

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