为什么创建后属性值不保留在对象中?

约翰尼·波尼(Johny Bony)

我写了这个简单的课:

unit Test;

interface

uses
  SysUtils;

type
  TGram = class
  private
    instanceCreated: boolean;
    constructor Create;
  public
    procedure test;
  end;

implementation

constructor TGram.Create;
begin
  instanceCreated := true;
end;

procedure TGram.test;
begin
  if not instanceCreated
    then raise Exception.Create('The object has not been created.');
end;

end.

当我调用方法测试时,我得到一个例外,那就是它没有被创建。

var test: TGram;
begin
    test := TGram.create;
    test.test;
end

在构造函数中,instanceCreated设置为true(我相信是这样),但是当我稍后尝试访问它时,它不存在。为什么?如何纠正呢?

戴维·赫弗南

您被称为TGram.Create您称为的公共构造函数,TObject而不是您的构造函数。那是因为您的构造函数是私有的。使您的构造函数公开,以查看您想要的行为。

这很好地说明了编译提示和警告的价值。编译器为您的类发出以下提示:

[dcc32提示]:H2219声明了专用符号“创建”,但从未使用过

您应始终注意提示和警告并适当解决它们。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么结构中的变量不保留其值?

将UITableView填充保留在标头上,但不保留在IOS7的分隔符中

提交后如何将字段值保留在表单中?

为什么应将BuildConfig保留在ProGuard中?

为什么即使删除列,列也仍保留在DataFrame的索引中

为何编组对象不保留在本机代码中修改的值?

为什么用send_data发送的对象似乎保留在内存中?

为什么在提交和签出后将文件夹保留在本地git工作目录中

为什么这是不可综合的?(不将其值保留在NOT(时钟沿)下)

C ++对象实例被销毁后仍保留在列表中

为什么成员函数名称查找保留在父类中?

对象保留引用的轨迹,但不保留在对象中

为什么“ this”的值保留在高阶组件中?

删除对象后,观察者仍保留在调度表中

为什么我的@State对象不保留其值?

更改密码不保留在Linux影子文件中

将其存储在useRef Hook中,并将可变值保留在'.current'属性中

为什么UIViewController会保留在内存中

为什么页脚中的图像不保留在容器中?

为什么我的活动类的实例变量值不保留在onResume()上?

动态添加的控件中的值不保留在回发中

窗口不保留在单个工作区中

通过java中的两个属性键将(最小)对象保留在集合中

MaterializeCSS-多重选择-取消选择后值保留在数组中

为什么Login-AzureRmAccount不保留在PowerShell会话中?

JPA 实体不保留在我的额外字段中

将通用 avro 记录序列化为 Array[Byte] 将架构保留在对象中

更新对象角度 5+ 时如何将对象值保留在表单中?

为什么这条轻微的红线保留在父容器中?