一个关于图片文件删除的问题 ( 积分: 50 )

  • 主题发起人 主题发起人 lbt
  • 开始时间 开始时间
L

lbt

Unregistered / Unconfirmed
GUEST, unregistred user!
请问各位高手:
怎么关闭用image.picture:=LoadFromFile(extractfilepath(application.ExeName)+bjtpname)打开的图片文件,并将其删除;在线等候
 
请问各位高手:
怎么关闭用image.picture:=LoadFromFile(extractfilepath(application.ExeName)+bjtpname)打开的图片文件,并将其删除;在线等候
 
Image1.Picture.Assign(nil);
 
你就想删除吗?直接删就行了,不用理会程序。我刚试了试,删除没问题。
 
TO:Johnny_du
然后,怎么删除Image1.Picture用过的图片呢?
 
procedure TForm1.BitBtn2Click(Sender: TObject);
var
I: Integer;
P: Pointer;
begin
I := SizeOf(Image1.Picture.Graphic);
P := @Image1.Picture.Graphic;
Image1.Picture.Assign(nil);
ZeroMemory(P,I);
end;
不知你是否满意?
 
TO:yzxcsw
我删不掉啊
情况是这样的,我软件启动时加载图片(image.picture:=LoadFromFile(....)),启动以后可以选择图片做为背景,并将图片复制到软件所在的目录下,并删除以前的图片,此是就删不掉啊,代码如下:
加载:
MyIni:=TIniFile.Create(extractfilepath(application.ExeName)+'software.INI');
bjtpname:=myini.ReadString('rjsz','bjtpname','');
if FileExists(extractfilepath(application.ExeName)+bjtpname)=true then
begin
image1.Picture.LoadFromFile(extractfilepath(application.ExeName)+bjtpname);
end;

设置,保存,删除原来的:
//删除原来的文件;
image1.Picture.Assign(nil);
MyIni:=TIniFile.Create(extractfilepath(application.ExeName)+'software.INI');
name:=myini.ReadString('rjsz','bjtpname','');

if FileExists(extractfilepath(application.ExeName)+name)=true then
begin
deletefile(extractfilepath(application.ExeName)+name);
end;

name:=ExtractFileName(OpenPictureDialog1.FileName);
MyIni:=TIniFile.Create(extractfilepath(application.ExeName)+'software.INI');
myini.WriteString('rjsz','bjtpname',name);
copyfile(PCHAR(OpenPictureDialog1.FileName),PCHAR(extractfilepath(application.ExeName)+name),false);

就是删不掉啊,帮帮我啊
 
TO:Johnny_du
原来用过的图片没有删除啊

情况是这样的,我软件启动时加载图片(image.picture:=LoadFromFile(....)),启动以后可以选择图片做为背景,并将图片复制到软件所在的目录下,并删除以前的图片,此是就删不掉啊,代码如下:
加载:
MyIni:=TIniFile.Create(extractfilepath(application.ExeName)+'software.INI');
bjtpname:=myini.ReadString('rjsz','bjtpname','');
if FileExists(extractfilepath(application.ExeName)+bjtpname)=true then
begin
image1.Picture.LoadFromFile(extractfilepath(application.ExeName)+bjtpname);
end;

设置,保存,删除原来的:
//删除原来的文件;
image1.Picture.Assign(nil);
MyIni:=TIniFile.Create(extractfilepath(application.ExeName)+'software.INI');
name:=myini.ReadString('rjsz','bjtpname','');

if FileExists(extractfilepath(application.ExeName)+name)=true then
begin
deletefile(extractfilepath(application.ExeName)+name);
end;

name:=ExtractFileName(OpenPictureDialog1.FileName);
MyIni:=TIniFile.Create(extractfilepath(application.ExeName)+'software.INI');
myini.WriteString('rjsz','bjtpname',name);
copyfile(PCHAR(OpenPictureDialog1.FileName),PCHAR(extractfilepath(application.ExeName)+name),false);
 
你是要从文件删除啊?那你也要先加入我给你的代码先从内存中删除该图片然后才能够从文件(磁盘)上删除该文件哦!否则你又在使用又要删除怎么可能呢??
 
if FileExists(extractfilepath(application.ExeName)+name) then
begin
deletefile(extractfilepath(application.ExeName)+name);
end;
 
Johnny_du:
我现在改成这样

I := SizeOf(Image1.Picture.Graphic);
P := @Image1.Picture.Graphic;
Image1.Picture.Assign(nil);
ZeroMemory(P,I);


//删除原来的文件;
//image1.Picture.Assign(nil);
MyIni:=TIniFile.Create(extractfilepath(application.ExeName)+'software.INI');
name:=myini.ReadString('rjsz','bjtpname','');

if FileExists(extractfilepath(application.ExeName)+name)=true then
begin
deletefile(extractfilepath(application.ExeName)+name);
end;
还是删不掉啊
 
问:你的Name是原来欲删除的图片名称对吗?有没有加扩展名??(如:*.JPG文件或*.BMP文件)还有你的DeleteFile函数有没有执行过你测试过了吗?建议加一些调试语句上去!(如ShowMessage之类的)如下:
if FileExists(extractfilepath(application.ExeName)+name)=true then
begin
ShowMessage('Will Delete');
deletefile(extractfilepath(application.ExeName)+name);
end
else
begin
ShowMessage('Never Deleted!');
end;
 
To:Johnny_du,

I := SizeOf(Image1.Picture.Graphic);
P := @Image1.Picture.Graphic;
Image1.Picture.Assign(nil);
ZeroMemory(P,I);


//删除原来的文件;
MyIni:=TIniFile.Create(extractfilepath(application.ExeName)+'software.INI');
name:=myini.ReadString('rjsz','bjtpname','');//获取原来使用图片的文件名

if FileExists(extractfilepath(application.ExeName)+name)=true then
begin
deletefile(extractfilepath(application.ExeName)+name);//
end;
还是删不掉啊
 
情况是这样的,我软件启动时加载图片(image.picture:=LoadFromFile(....)),启动以后可以选择图片做为背景,并将图片复制到软件所在的目录下,并删除以前的图片,此是就删不掉啊,代码如下:
加载:
MyIni:=TIniFile.Create(extractfilepath(application.ExeName)+'software.INI');
bjtpname:=myini.ReadString('rjsz','bjtpname','');//从INi文件获取设置使用的图片文件名
if FileExists(extractfilepath(application.ExeName)+bjtpname)=true then
begin
image1.Picture.LoadFromFile(extractfilepath(application.ExeName)+bjtpname);//加载图片文件
end;


软件打开后
设置保存
//删除原来的文件;
I := SizeOf(Image1.Picture.Graphic);
P := @Image1.Picture.Graphic;
Image1.Picture.Assign(nil);
ZeroMemory(P,I);


MyIni:=TIniFile.Create(extractfilepath(application.ExeName)+'software.INI');
name:=myini.ReadString('rjsz','bjtpname','');//获取原来使用的图片文件

if FileExists(extractfilepath(application.ExeName)+name)=true then
begin
deletefile(extractfilepath(application.ExeName)+name);//删除,我测试后,他执行了,还是删除不掉
end;

name:=ExtractFileName(OpenPictureDialog1.FileName);//获取新选择的图片文件名
MyIni:=TIniFile.Create(extractfilepath(application.ExeName)+'software.INI');
myini.WriteString('rjsz','bjtpname',name);//保存新选择的图片文件名
copyfile(PCHAR(OpenPictureDialog1.FileName),PCHAR(extractfilepath(application.ExeName)+name),false); //将选择的图片复制到软件所在目录


代码就是这样了,还是删不掉啊,我也觉得怪啊
 
你看过有没有真正执行DeleteFile函数了吗??我想主要问题应该是在你的图片名称或扩展名上。你要加上我上面说的调试语句试试看有没有执行DeleteFile语句哦!
 
TO:Johnny_du
我看了,执行了,还是删不掉,扩展名这些是对的
 
各位:
我还做了一个测试程序deletefile能删除其他类别的文件就是,不能删除jpg 文件,这是为什么啊,谁能告诉我啊!!!怪怪怪!!!!
 
各位大哥,我找出真真的原因了:是因为图片本身的原因,我换了些图片就可以了,我也不知道,图片可以正常打开,编辑,为什么就是不能用deletefile删除啊,请问:copyfile会不会损坏图片啊,谁能告诉我这是为什么,希望版主给予答复;
在这里我要谢谢,Johnny_du,及各位帮我的高手
谢谢你们祝你们中500万!!!
 
to lbt:我试过了你说的问题,可是能够删除用CopyFile创建的JPG文件副本啊!我首先用SaveToFile保存一个图片到磁盘(JPG格式的),然后用CopyFile创建该图片的副本,然后用DeleteFile删除,一切都OK的啊!你的为什么...顺便说一句我用的是Delphi6+SP2在Win2003平台上做的测试。
 

Similar threads

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