1
15
下面是我将如何使用类变量、类过程和初始化块来实现这一点:
|
2
4
注意,这个类变量在任何类实例中都是可写的,因此您可以在代码中的其他地方设置它,通常基于某些条件(记录器类型等)。 编辑:在类的所有子代中也是相同的。在其中一个子实例中更改它,并对所有子实例进行更改。 还可以设置默认实例处理。
|
3
4
去年,Hallvard Vassbotn写了一篇关于Delphi黑客的博客,文章分为两部分: 是的,这本书读得很长,但很有价值。 总之,我将名为vmtotable的(不推荐使用的)vmt条目重新用作变量。 vmt中的这个槽可以用来存储任何4字节的值,但是如果您想要存储,您可以始终为一个记录分配您想要的所有字段。 |
4
2
您要查找的关键字是“class var”-这会在类声明中启动一个类变量块。如果希望在块后面包含其他字段,则需要以“var”结束块(否则块可能以“private”、“public”、“procedure”等说明符结束)。如 (编辑:我重新阅读了问题并将引用计数移动到tmyclass中-因为如果它来自其他人的库,您可能无法编辑要共享的tmysharedObjectClass类)
请注意,上面不是线程安全的,可能有更好的引用计数方法(例如使用接口),但这是一个简单的示例,应该可以让您开始。注意,tmysharedObjectClass可以由tlogogger或您喜欢的任何内容替换。 |
5
2
好吧,这不是美丽,但在Delphi7中效果很好:
…
我正在使用它来构建单例对象。 |
6
1
对于我想要做的(一个私有类常量),我能想到的最新解决方案(基于目前的响应)是:
也许更面向对象的方法是:
如果有多个这样的类常量,这可能更有意义。 |
7
1
在你提出一个“完美”的解决方案之前,我认为有两个问题需要回答。
代码:
编辑:类变量似乎是全局存储的,而不是每个线程一个实例。见 this question 详情。 |
8
0
在Delphi中,静态变量实现为 变量类型常量 :) 这可能有些误导。
是的,另一种可能是在
只有当编译器开关“assignable consts”打开、全局打开或使用
|
9
0
在版本7之前,Delphi没有静态变量,您必须使用全局变量。
为了使它尽可能私密,把它放在
|
Some1Else · 函数在Delphi中重新创建TForm 2 年前 |
Agmcz · Delphi安卓库。so未安装(AAB) 2 年前 |
nader · 如何使用delphi在web上提交表单 6 年前 |
kwadratens · Delphi中的卡方分布函数代码 6 年前 |
user9672569 · 如何在完整的位图图像中绘制阴影效果? 6 年前 |
mmmm · MSBuild(用于Delphi)Make-like功能 6 年前 |