>>img:array of timage;for i:=0 to 10 do
begin
SetLength(Img,10);
Img[i]:=TImage.create(self);
Img[i].Parent:=self;
Img[i].Width:=200;
Img[i].Height:=80;
Img[i].Left:=10;
Img[i].Top:=80*i+5;
Img[i].Picture.LoadFromFile('路径');
end;
请问我怎样释放创建的这10个图像对象?
begin
SetLength(Img,10);
Img[i]:=TImage.create(self);
Img[i].Parent:=self;
Img[i].Width:=200;
Img[i].Height:=80;
Img[i].Left:=10;
Img[i].Top:=80*i+5;
Img[i].Picture.LoadFromFile('路径');
end;
请问我怎样释放创建的这10个图像对象?
解决方案 »
- delphi Imge控件加载一个图片 点击一下显示换成另外一个图片 再点击一下又换成第一张图片 如何实现?
- delphi取excel工作表名
- delphi中media player的用法
- 如何为ClientDataset建立引索?(第N次提问)
- WM_NCLBUTTONDBLCLK 消息, 高手求解
- 关于delphi帮助的问题,在线等。
- 怎样在MEMO中滚动文字?
- 各位帮手,如果实现类似windows任务栏的自动隐藏功能.
- 哪有TEECHART的CRACK?或者注册版?
- 请教各位大虾,在Windows 98/2000下,先删除文件,文件跑到了回收站,然后又清空了回收站,这种情况下用什么方法可以恢复文件?
- delphi调用C# WebService 出错?
- 为什么 Delphi 仍有很好的未来?
SetLength(Img,10); //这一句不应该放在循环体内
for i:=0 to 10 do
begin
Img[i]:=TImage.create(self);
Img[i].Parent:=self;
Img[i].Width:=200;
Img[i].Height:=80;
Img[i].Left:=10;
Img[i].Top:=80*i+5;
Img[i].Picture.LoadFromFile('路径');
end;释放:
for i:=0 to 10 do Img[i].Free;
SetLength(Img, 0);
for i:=0 to 9 do
begin
Img[i]:=TImage.create(self);
Img[i].Parent:=self;
Img[i].Width:=200;
Img[i].Height:=80;
Img[i].Left:=10;
Img[i].Top:=80*i+5;
Img[i].Picture.LoadFromFile('路径');
end;释放:
for i:=0 to 10 9 Img[i].Free;
SetLength(Img, 0);
for i:=low(img) to high(img) do
begin
Img[i]:=TImage.create(self);
Img[i].Parent:=self;
Img[i].Width:=200;
Img[i].Height:=80;
Img[i].Left:=10;
Img[i].Top:=80*i+5;
Img[i].Picture.LoadFromFile('路径');
end;释放:
for i:=low(img) to high(img) do
Img[i].Free;
SetLength(Img, 0);
我各人认为,这段释放代码有待商榷
for i:=low(img) to high(img) do
Img[i].Free; 我认为应该改为这样:
for i := high(Img) to low(Img) do
Img[i].Free;
测试代码:
首先,
for i := low(Img) to high(Img) do
begin
Img[i].Free;
if Assigned(Img[i]) then ShowMessage('ok' + IntToStr(i));{将会显示对话框}
end;
然后: for i := high(Img) to low(Img) do
begin
Img[i].Free;
if Assigned(Img[i]) then ShowMessage('ok' + IntToStr(i));{将不会显示对话框}
end;
我个人认为
中午喝高了,会犯这种错误? 这段代码根本不会被执行
for i := high(Img) to low(Img) do
begin
Img[i].Free;
if Assigned(Img[i]) then ShowMessage('ok' + IntToStr(i));{将不会显示对话框}
end;
begin
// Img[i].Free;
FreeAndNil(Img[i]);
if Assigned(Img[i]) then ShowMessage('ok' + IntToStr(i));{将不会显示对话框}
end;