【发布时间】:2021-11-13 04:05:00
【问题描述】:
我对@987654321@ 方法文档的模糊术语感到困惑。
中的“定”字如果 Source 是 TStringList 类型,则列表设置为源
TStringList对象的列表,如果支持关联对象,则复制所有关联对象 也来自 Source。
可以用多种方式解释。 TStringList 对象是从源复制到目标,而源保持不变......还是目标设置为指向到源对象而不复制任何内容?后者的含义是,如果我随后释放目标对象,则源对象也被释放。还是?
TStrings.AddObject 文档中的这条语句,即字符串添加到目的地的方式,对我来说更加混乱:
注意:
TStrings对象不拥有您以这种方式添加的对象。即使TStrings实例被销毁,添加到TStrings对象的对象仍然存在。它们必须由应用程序显式销毁。
这是否意味着我必须做的不仅仅是调用.Free 来销毁目的地TStringList 完成后?
【问题讨论】:
-
这是一个副本。您可以更改或释放其中一个而不影响另一个。
-
是的,任何相关的对象都是你的责任。在 Delphi 中,对象变量(如
x: TButton)只是对堆对象的引用。 -
那我有一个不同的问题。我有一个访问冲突,只有当我自己运行 Mac 应用程序而不是从 IDE 运行时才会发生,所以我无法调试它!
-
我们无法帮助您解决我们看不到的问题。向我们展示您的代码。
-
@nolaspeaker 如果调试器没有显示错误,那么我不知道代码中的哪个位置发生了这种情况。我取出了 Assign 语句,因为我意识到我不需要中间步骤来提取值。我可以直接从 TObjectDictionary 中获取它们。运行时错误仍然存在,但在调试器运行时仍然不会发生,只有当我独立运行应用程序时才会发生。
标签: delphi assign tstringlist