Delphi本地功能有哪些具体应用场景?

更新于
2026-10-05 00:54:23
1阅读来源:SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计619个文字,预计阅读时间需要3分钟。

我开发了一个包含Delphi单元中的函数库,我们将其称为UtilitiesU。库中的一些函数仅作为辅助函数,仅在UtilitiesU中使用。我想将使用这些功能的范围限制在UtilitiesU中。以下是已知的方法:

+ 从接口中删除+ 在接口中添加注释+ 将函数移动到另一个单元

我有一个包含在delphi单元中的函数库,我们将其称为UtilitiesU.其中一些函数只是辅助函数,仅在UtilitiesU中使用.我想将这些功能的范围限制在UtilitiesU.这些是我所知道的方法:

>从接口中删除声明并在实现中将其移动到其依赖项之前 – 函数定义的凌乱,反直觉的顺序,如果存在例如,则不总是可能的.相互依赖
>将所有函数放入静态类(ala Java)并根据需要将它们公开或私有 – 太多样板,错综复杂
>声明辅助函数是使用它们的函数的局部函数 – 与第1点相同的问题

理想情况下,我希望以C/C++方式实现它 – 也就是说,在实现部分中将它们声明为静态.这可能吗?有没有更好的办法?

我会做:

Remove the declaration from the
interface and move the function before
its dependents in the implementation –
messy, counter-intuitive order of
function definitions, not always
possible if there is e.g. mutual
dependency

顺便说一句,并不像在其他语言中那样在delphi中声明静态类.只有var和方法可以是静态的,而不是整个类.

还有其他3种方式

1 – 您可以创建一个类,在其私有部分(可能是静态方法)上放置所有帮助程序代码,并在UtilitiesU单元中使用它.我想不会这样做,我认为你写的1方法是最好的.

2 – 您可以在另一个单元中分配所有帮助程序代码,以免将其称为UtilitiesHelper.

3 – 您可以混合使用1和2,但使用受保护的方法.然后,您可以轻松破解UtilitiesU单元中的帮助程序类.例:

在UtilitiesHelper单元中

TUtilitiesHelper = class protected //all your methods here end;

在UtilitiesU单元中

TUtilitiesHelperHack = class(TUtilitiesHelper) end;

有了它,您可以访问受保护的方法.但我也不推荐它.

编辑

正如肯所说,你可以使用:

implementation procedure ShowMe;forward;

我自己测试了这个并且它有效. (这对我来说也是新的,谢谢肯).

本文共计619个文字,预计阅读时间需要3分钟。

我开发了一个包含Delphi单元中的函数库,我们将其称为UtilitiesU。库中的一些函数仅作为辅助函数,仅在UtilitiesU中使用。我想将使用这些功能的范围限制在UtilitiesU中。以下是已知的方法:

+ 从接口中删除+ 在接口中添加注释+ 将函数移动到另一个单元

我有一个包含在delphi单元中的函数库,我们将其称为UtilitiesU.其中一些函数只是辅助函数,仅在UtilitiesU中使用.我想将这些功能的范围限制在UtilitiesU.这些是我所知道的方法:

>从接口中删除声明并在实现中将其移动到其依赖项之前 – 函数定义的凌乱,反直觉的顺序,如果存在例如,则不总是可能的.相互依赖
>将所有函数放入静态类(ala Java)并根据需要将它们公开或私有 – 太多样板,错综复杂
>声明辅助函数是使用它们的函数的局部函数 – 与第1点相同的问题

理想情况下,我希望以C/C++方式实现它 – 也就是说,在实现部分中将它们声明为静态.这可能吗?有没有更好的办法?

我会做:

Remove the declaration from the
interface and move the function before
its dependents in the implementation –
messy, counter-intuitive order of
function definitions, not always
possible if there is e.g. mutual
dependency

顺便说一句,并不像在其他语言中那样在delphi中声明静态类.只有var和方法可以是静态的,而不是整个类.

还有其他3种方式

1 – 您可以创建一个类,在其私有部分(可能是静态方法)上放置所有帮助程序代码,并在UtilitiesU单元中使用它.我想不会这样做,我认为你写的1方法是最好的.

2 – 您可以在另一个单元中分配所有帮助程序代码,以免将其称为UtilitiesHelper.

3 – 您可以混合使用1和2,但使用受保护的方法.然后,您可以轻松破解UtilitiesU单元中的帮助程序类.例:

在UtilitiesHelper单元中

TUtilitiesHelper = class protected //all your methods here end;

在UtilitiesU单元中

TUtilitiesHelperHack = class(TUtilitiesHelper) end;

有了它,您可以访问受保护的方法.但我也不推荐它.

编辑

正如肯所说,你可以使用:

implementation procedure ShowMe;forward;

我自己测试了这个并且它有效. (这对我来说也是新的,谢谢肯).