首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何更改Tobject变量的指针地址?

如何更改Tobject变量的指针地址?
EN

Stack Overflow用户
提问于 2020-05-01 10:56:45
回答 3查看 184关注 0票数 0

我有一个Tobject A。这个对象是在几个地方链接的(例如B,:= A);我想用C代替A,也表示B现在将是从egal到C。我怎么能说现在A会指向C,所以B也会指向C呢?

EN

回答 3

Stack Overflow用户

发布于 2020-05-01 11:38:46

你希望这样做的唯一方法就是引入一个额外的间接层。目前,AB是一个地址的两个不同副本的值。您需要同时更改AB中的值,我认为这是您无法做到的。

您需要做的是将AB声明为指向TObject的指针,并使它们指向保存对TObject的引用的相同变量。

代码语言:javascript
复制
var
  obj: TObject;
  A, B: ^TObject;
...
obj := ...
A := @obj;
B := @obj;

稍后您可以修改obj,因为AB都引用相同的TObject变量obj,所以它们都会看到这种变化。

票数 2
EN

Stack Overflow用户

发布于 2020-05-01 12:42:09

你需要改变你的代码设计。你需要一些间接的帮助。您可以使用像David解释的指针这样的指针,也可以使用中间对象;让我们称它为提供程序。提供程序公开对象属性。创建一个提供程序并将其传递给代码的几个部分。提供程序的用户在需要对象时访问对象属性。

在任何时候,您都可以为提供程序分配一个新对象。之后,提供程序的用户将看到新的对象。

该解决方案相对于简单指针的一个好处是,您可以向提供程序添加任何方法和属性,这可能很有用。

票数 2
EN

Stack Overflow用户

发布于 2020-05-01 11:20:47

代码语言:javascript
复制
procedure Test(Sender:TObject);
var
 A,B,C : TObject;
 D,E : TObject;
begin
 A := C;
 B := C;

// if you want to keep variable A and B's original values then:

 D := A;
 E := B;

 A := C;
 B := C;

end;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61541122

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档