局部对象跨函数释放(50分)

  • 主题发起人 主题发起人 w8u
  • 开始时间 开始时间
W

w8u

Unregistered / Unconfirmed
GUEST, unregistred user!
我的标题不知道是什么意思。其实我想表达的意思是:
现有两个函数:A(),B();

A();
begin
....
with TFlashForm.create(nil) do begin
show;
refresh;
end;
end;

注意,我创建了一个对象但没释放。我怎么在函数B()中释放他?
 
用一个全局的 FlashForm : TFlashForm;来指向你创建的Form,在B()中再Free它
 
用参数的形式传过去,然后free掉
 
with TFlashForm.create(nil) do begin
show;
refresh;
end;
注意我没有赋值给什么变量。
 
局部对象在局部的函数完成后应当就自动的释放了,没有必要人为操作的。如果要保证释放
一般都是用
Create Object;
try
一些操作;
finally
Object.Free;
end;
>>>>>>>>>>>>>不过我仍试了一下:
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
procedure Test(var sl: TStringList);
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
var
s: TStringList;
begin
test(s);
end;

procedure TForm1.Test(var sl: TStringList);
begin
sl.Free; //在这里提示出错。
end;

end.
所以你的要求估计没有办法达到。
 
赫赫,你在Create的时候不要传递Nil参数就可以了,这样会自动释放掉!要不用一个
全局变量也可以俄。
 
接受答案了.
 

Similar threads

S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
913
SUNSTONE的Delphi笔记
S
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
后退
顶部