如何还原资源文件中的文件,还有怎么编写自身删除文件(50分)

  • 主题发起人 主题发起人 kylinshine
  • 开始时间 开始时间
K

kylinshine

Unregistered / Unconfirmed
GUEST, unregistred user!
我想写个简单的程序,就是执行后自动释放1到2个文件然后删除自身
意思就是文件A执行后生成文件c,d 然后文件a消失 请高手作答 谢谢
 
你自己生成一个比处理,然后运行程序启动该批处理,程序退出时会自动删除.
 
冒似WINRAR可以搞定
 
批处理文件是一个扩展名为bat的文本文件,里面集成了多条用户想一次运行的命令,当用户键入该批处理文件的文件名后,系统就会逐条解释并执行文件中包含的部分或者全部命令。我们可以使用任何文本编辑器来编写他,也可以通过程序生成一个文本文件,并自动向其中添加命令。先简单的生成一个bat文件,让我们看看删除功能是如何实现的。新建一个文本文件,在里面填入

del test.txt
del %0

将文件保存为Test.bat,并且在同一目录下建立一个Test.txt文件。运行刚刚生成的Test.bat文件,你会发现Test.txt和Test.bat文件同时消失了。文件中的第一行使用了DOS命令del删除test.txt文本文件,第二行中的%0代表批处理文件本身。现在我给大家演示如何用程序动态生成批处理文件实现程序卸载功能。

在Delphi中新建一个应用程序,并在窗口里放上一个按钮,双击按钮生成它的OnClick事件,填入如下代码:

AssignFile(BatchFile, ‘UnInstall.bat’);
Rewrite(BatchFile);

Writeln(BatchFile, 'del "Project1.exe"');
Writeln(BatchFile, 'del %0');
CloseFile(BatchFile);

它的功能是生成文本格式的批处理文件,接下来我们需要运行生成的UnInstall.bat程序,所以在后面继续添加代码:

ShellExecute(Application.Handle,'nil','UnInstall.bat',nil,nil,SW_HIDE);

通过这个函数可以调用生成的批处理文件;另外使用ShellExecute函数时不要忘记在uses里加上ShellAPI文件。编译该代码,运行,点击按钮,随后Project1.exe和UnInstall.bat程序都被删除。至此,一个简单的卸载程序完成了。

为了严谨,上面的代码还可以继续完善,比如在批处理文件中使用if exist [path&filename] goto语句测试要删除的文件是否存在,文件名使用绝对路径等等,这可以根据需要自行选择。
 
又学到了新知识。
 
学习一下
 
正是好东西,太好了。“学海无涯苦作舟”,楼上解释得好详细
 
至于释放出1~2个文件,如果文件是固定的,你可以使用delphi自带的资源文件将你要释放的文件以资源文件方式加进exe中(如何制作资源文件不用我解释了吧...)

下面是如何释资源文件中的文件放并保存到一个位置,转前人的帖子:

ExtractRes('exefile','myexe','c:/new.exe');
~~~~~~~
自己定义的资源类型

就把ha1.exe以new.exe为名字保存到C盘根目录下了.

function TForm1.ExtractRes(ResType, ResName, ResNewName: string): boolean;
var
Res: TResourceStream;
begin
try
Res := TResourceStream.Create(Hinstance, Resname, Pchar(ResType));
try
Res.SavetoFile(ResNewName);
Result := true;
finally
Res.Free;
end;
except
Result := false;
end;
end;
 
能否给出一个完整的程序代码或者源文件,如果可以的话,麻烦打包发往kylinshine@163.com 我知识想知道资源文件的释放问题方面 至于自删除我已经在学习vb时候学习过了,我是想要到更好的答案,结果答案还是一样的.算了现在只是想要资源文件方面的相关资料和源文件.
 
我上面的代码直接复制进去就能用,你还想知道什么? 怎么做资源文件?
 
多人接受答案了。
 

Similar threads

回复
0
查看
1K
不得闲
S
回复
0
查看
751
SUNSTONE的Delphi笔记
S
S
回复
0
查看
758
SUNSTONE的Delphi笔记
S
D
回复
0
查看
959
DelphiTeacher的专栏
D
D
回复
0
查看
893
DelphiTeacher的专栏
D
后退
顶部