DelPhi Integer函数入参是TObject,返回的数值是什么

定义了这样一个Delphi对象

TNsStVtLPVar = class(TObject)
  public
    VarIndex: Integer;
    IntVar: Boolean;
    constructor Create; virtual;
  end;

然后用Intenger函数取值,这个取值到底是TObject的地址还是别的

var num : Interger;
pvar :TNsStVtLPVar ;
begin
pvar  := TNsStVtLPVar.Create;
num  := Integer(pvar);//这个取值是地址还是别的?
end;

引用 皆我百晓生 小程序回复内容作答:

在Delphi中,整数类型的Integer函数可以用于将指针或对象转换为整数类型。当传递一个对象给Integer函数时,它会返回对象的地址,即对象的指针。所以在你的例子中,num的值将保存pvar对象的地址。

【以下回答由 GPT 生成】

根据Delphi的规则,当你将一个 TObject 对象转换为 Integer 类型时,它实际上是将对象的指针(内存地址)转换为整数。所以 num 的值是 pvar 对象的地址。

在你的代码示例中, num 将存储 pvar 对象的内存地址,而不是一个有意义的整数值。如果你想要获取 TObject 对象的其他属性或方法的值,你应该使用相应的访问方式。

示例代码中的 pvar := TNsStVtLPVar.Create; 表示你创建了一个新的 TNsStVtLPVar 对象,并将其分配给 pvar 变量。如果你想要访问该对象的属性或方法,你可以直接使用 pvar 变量。

var
  pvar: TNsStVtLPVar;
begin
  pvar := TNsStVtLPVar.Create;
  // 访问对象的属性或方法
  pvar.SomeProperty := 123;
  pvar.SomeMethod;
end;

如果你的目的是将 TObject 对象转换为可读或有意义的整数值,你需要根据具体的对象类型,获取相应的属性或方法返回值并转换为整数类型。

总的来说, num 不是 TObject 的地址,而是存储了 pvar 对象的地址。如果你想获得有意义的整数值,你需要进一步访问 pvar 对象的属性或方法,并根据具体情况进行转换。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^