在我的框架中,我有一个DataSource1实例,该实例在设计时已被丢弃在Form上。
在运行时的某个时刻,我需要将其“转换”为对另一个DataSource2的引用(在数据模块上)。
只是设置:
DataSource1 := DataSource2;
足以使DataSource1成为DataSource2的引用?看来此时尚未破坏DataSource1-当销毁DataSource2的所有者时,销毁了它,并且实际上有两个TDataSource实例。
还是我需要首先显式释放DataSource1?
DataSource1.Free;
DataSource1 := DataSource2;
正确的方法是什么?(除了首先声明将DataSource1作为参考)
当您声明变量具有从TObject继承的类型时,实际上是在声明一个指针。
调用构造函数时,您正在创建一个实例。构造函数返回一个指向该实例的指针。通常,您将指针分配给这样的变量:
Obj1 := TMyClass.Create;
您可以通过简单的分配使第二个变量指向或引用实例:
Obj2 := Obj1;
通过调用Free销毁对象:
Obj1.Free;
此时,Obj2指向一个不再存在的对象。我们说Obj2是陈旧的参考。
在您的情况下,您需要释放第一个对象:
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句