Free pascal 中为什么不可以用erase删除exe文件了?
在TurboPascal中erase语句是可以删除正在运行的exe文件的,但是FP中为毛就不行了呢……假设这个pas文件生成的程序名就叫a.exe,举例如下程序段:var...
在Turbo Pascal中erase语句是可以删除正在运行的exe文件的,但是FP中为毛就不行了呢……假设这个pas文件生成的程序名就叫a.exe,举例如下程序段:
var f:file;
begin
assign(f,'a.exe');
erase(f);
end.
在tp中运行完程序就KO了,但是FP中会出现Run Time Error4208179; Error adress $00409F34
这究竟是为毛啊为毛,求大虾解决!感激涕零 展开
var f:file;
begin
assign(f,'a.exe');
erase(f);
end.
在tp中运行完程序就KO了,但是FP中会出现Run Time Error4208179; Error adress $00409F34
这究竟是为毛啊为毛,求大虾解决!感激涕零 展开
1个回答
展开全部
Free Pascal也用erase删除‘未打开的文件’,a.exe可能正在运行,驻留内存了,导致无法删除。
assign(f,'a.exe');
erase(f);{这两句没有错误}
也可以用deleteFile删除文件,
Uses sysutils;
DeleteFile('test.txt');
assign(f,'a.exe');
erase(f);{这两句没有错误}
也可以用deleteFile删除文件,
Uses sysutils;
DeleteFile('test.txt');
追问
用deletefile也删不了正在运行的啊……exe文件删不了。还有什么办法么?尽量不要调用dos吧……其实我的目的就是程序自毁,自己干掉自己而已。一开始用的是TP,可以的,但是FP就不行了- =
追答
TP因为是dos时代的产品,删除文件比较硬性,不顾及后果。所以漏洞多。
winnt平台通常不允许删除正在运行中的文件。正常做法是按卸载方法,给计划任务登记下次重启后自动删除。
自毁需要特别处理,用win的远程进程,主进程执行完退出后,远程进程进行删除。。。
正常的应用,就不要这么搞了。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询