急问一个小问题:Invalid pointer operation
我有两个窗口Form1跟Form2,其中Form1的按钮点击后
procedure TForm1.FlatButton2Click(Sender: TObject);
begin
application.createform(Tform2,form2);
Form2.ShowModal;
end;
Form2里面有个小小的数据库,(Picturename,X,Y三项)用于控制窗口显示的时候载入哪张图片及图片的坐标
Image: array of TImage;
procedure TForm2.FormShow(Sender: TObject);
var
Rec_count:Integer;
begin
with ADOTable1 do
begin
try
First;
while not Eof do
begin
Rec_count:=ADOTable1.RecNo;
Image[Rec_count]:= Timage.Create(nil);
Image[Rec_count].Picture.LoadFromFile('.\Sprite\'+ADOTable1['Sprite_Name']+'.bmp');
Image[Rec_count].Parent:= PaintBox1.Parent;
Image[Rec_count].Left:= ADOTable1['X'];
Image[Rec_count].Top:= ADOTable1['Y'];
Image[Rec_count].Transparent:=true;
Image[Rec_count].Autosize:=true;
Next;
end;
finally
end;
end;
end;
运行结果没问题,但是再退出窗口的时候就问题来了,关第一个窗口的时候没问题,关第二个窗口的时候提示 Invalid pointer operation,我点了确定,再按一次F9,变成了Access violation at address 004C7EFD in module.....
请问是怎么回事哦 ?我想加个
for i:= 1 to MaxRecod1 do
begin
Image[i].free;
end;
但是不知道加在Form1 的FormDestroy还是form2的,我都试过,都是不行的