Delphi 破坏与自由与封闭有什么区别
我最近在学习Delphi,但当我想关闭对话框或窗体时,它可以使用close、Free和Destroy命令Delphi 破坏与自由与封闭有什么区别,delphi,Delphi,我最近在学习Delphi,但当我想关闭对话框或窗体时,它可以使用close、Free和Destroy命令 这些命令之间有什么区别?我应该如何决定使用哪一个命令?t格式。关闭 在VCL中,根据窗体的状态关闭窗体。如果您的FFormState是FSModal它将执行取消操作。 如果您的表单是MainForm,则整个应用程序将被终止,依此类推。有关更多信息,请查看TCustomForm.Closesystem.pas内部的。 最终的结果是你再也看不到表单了,但这并不意味着你对表单的引用被破坏了 .fr
这些命令之间有什么区别?我应该如何决定使用哪一个命令?
t格式。关闭
在VCL中,根据窗体的状态关闭窗体。如果您的FFormState
是FSModal
它将执行取消操作。
如果您的表单是MainForm
,则整个应用程序将被终止,依此类推。有关更多信息,请查看TCustomForm.Closesystem.pas内部的。
最终的结果是你再也看不到表单了,但这并不意味着你对表单的引用被破坏了
.free
free也可以调用destroy,但正如David所说,它是零引用安全的,所以在大多数情况下,您应该使用free而不是destroy
.destroy
t表单关闭
在VCL中,根据窗体的状态关闭窗体。如果您的FFormState
是FSModal
它将执行取消操作。
如果您的表单是MainForm
,则整个应用程序将被终止,依此类推。有关更多信息,请查看TCustomForm.Closesystem.pas内部的。
最终的结果是你再也看不到表单了,但这并不意味着你对表单的引用被破坏了
.free
free也可以调用destroy,但正如David所说,它是零引用安全的,所以在大多数情况下,您应该使用free而不是destroy
.destroy
这本书怎么说?这本书有点开放。在Free和Destroy之间,通常使用Free,因为它是零引用安全的。我想这不重要,但在编写析构函数时很重要。因此,在“释放”和“关闭”之间,这取决于您希望如何管理窗体的生存期。请始终调用Free
,而不是Destroy
。这就是它的目的。至于关闭
,这取决于形式。它是怎么说的?这个有点开放。在Free和Destroy之间,通常使用Free,因为它是零引用安全的。我想这不重要,但在编写析构函数时很重要。因此,在“释放”和“关闭”之间,这取决于您希望如何管理窗体的生存期。请始终调用Free
,而不是Destroy
。这就是它的目的。至于Close
,这取决于表单。在表单的析构函数中调用FreeAndNil有什么意义,为什么不直接调用Free?这就是TCustomForm.Destroy所做的!ist释放项目并将指针引用设置为零。您确定吗,@fisi pjm?销毁析构函数无权访问用于调用它的指针引用,因此无法将其设置为NIL。这就是为什么一开始会有一个自由和零。我想我们彼此都说了过去。TCustomForm包含在VCL.Form中。为什么会有访问问题?您认为TCustomForm.Destroy设置为NIL的“指针引用”是什么?如果我调用MyForm.Destroy,那么之后“MyForm”的值是什么?不变还是零?(答案不变)。在窗体的析构函数中调用FreeAndNil有什么意义,为什么不直接调用Free?这就是TCustomForm.Destroy所做的!ist释放项目并将指针引用设置为零。您确定吗,@fisi pjm?销毁析构函数无权访问用于调用它的指针引用,因此无法将其设置为NIL。这就是为什么一开始会有一个自由和零。我想我们彼此都说了过去。TCustomForm包含在VCL.Form中。为什么会有访问问题?您认为TCustomForm.Destroy设置为NIL的“指针引用”是什么?如果我调用MyForm.Destroy,那么之后“MyForm”的值是什么?不变还是零?(答案没有改变)。