用了动态控件,程序关闭时报错
1. 程序运行期间动态创建了一些checkbox控件,窗体关闭时没有进行释放(认为窗体关闭时会释放上面的控件)
关闭这个子窗体的时候程序不会报错,但关闭程序的主窗体时则报错“Access Violation at address FFF40000”
2. 若在子窗体关闭时进行释放,代码如下,则关闭程序主窗体的错误代码就变成了“Access Violation at address 00574C32”
procedure TFRHWIPTrend.FormClose(Sender: TObject; var Action: TCloseAction);
var i:integer;
cbox:TCheckbox;
begin
for i:=panel6.ComponentCount-1 downto 0 do
begin
//panel6.components[i].Free;
if (panel6.components[i] is TCheckbox) then
begin
cbox:= TCheckbox(panel6.components[i]);
FreeAndNil(cbox);
end;
end;
请高手指点该怎么解决这种问题啊?
我另外的一个子窗体也有动态控件,但那个就不报错,唉!
[解决办法]
在FormClose函数结束的end上下断,看是先跳出错误还是先跑到断点位置,然后就可以分析是多重释放导致的还是其他原因.如果跑到断点位置没出错,那就是其他问题
[解决办法]
创建的时候用create(self);或者create(application);
让它随窗体关闭或者程序退出时自动释放
不过,你确定这错误是控件引起的吗(怀疑是其它原因)
[解决办法]
动态创建的控件一般也不用手动去释放啊,估计你程序哪里还存在问题
[解决办法]
数组释放了吗?
[解决办法]
sgList.Cells[j,0]是什么?
取单元格?
什么控件的单元格?
如果是Excel工作表的话那个0会导致报错!