代码如下:
procedure TfrmMain.aClosePageExecute(Sender: TObject);
begin
if pcPages.ActivePageIndex <> -1 then
begin
pcPages.ActivePage.Free;
//pcPages.ActivePage:=nil;
//pcPages.activepageindex:=pcPages.pagecount-1;
end;
end;pcPages.ActivePage.Free之后就报内存错误了。
procedure TfrmMain.aClosePageExecute(Sender: TObject);
begin
if pcPages.ActivePageIndex <> -1 then
begin
pcPages.ActivePage.Free;
//pcPages.ActivePage:=nil;
//pcPages.activepageindex:=pcPages.pagecount-1;
end;
end;pcPages.ActivePage.Free之后就报内存错误了。
这个ActivePage里都有什么,Free时发生了什么
跟一下
和普通数组一样,统一申请,统一释放,
你要把数组的某一个元素的内存地址释放掉,
当然不能了
不用free,直接pcPages.ActivePage.Free就可以了
procedure TfrmMain.aClosePageExecute(Sender: TObject);
begin
if pcPages.ActivePageIndex <> -1 then
begin
Timer1Timer(Timer1);
//pcPages.ActivePage.Free;
//pcPages.ActivePage:=nil;
//pcPages.activepageindex:=pcPages.pagecount-1;
end;
end;
procedure TMAINFORM.Timer1Timer(Sender: TObject);
begin
Timer1.Enable:= False;
pcPages.ActivePage.Free;
end;
procedure TfrmMain.aClosePageExecute(Sender: TObject);
begin
if pcPages.ActivePageIndex <> -1 then
begin
Timer1.enabled:= True;
//pcPages.ActivePage.Free;
//pcPages.ActivePage:=nil;
//pcPages.activepageindex:=pcPages.pagecount-1;
end;
end;