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
这究竟是为毛啊为毛,求大虾解决!感激涕零
展开
 我来答
百度网友9308069
2012-06-09 · TA获得超过1万个赞
知道大有可为答主
回答量:3947
采纳率:89%
帮助的人:1937万
展开全部
Free Pascal也用erase删除‘未打开的文件’,a.exe可能正在运行,驻留内存了,导致无法删除。
assign(f,'a.exe');
erase(f);{这两句没有错误}

也可以用deleteFile删除文件,
Uses sysutils;
DeleteFile('test.txt');
追问
用deletefile也删不了正在运行的啊……exe文件删不了。还有什么办法么?尽量不要调用dos吧……其实我的目的就是程序自毁,自己干掉自己而已。一开始用的是TP,可以的,但是FP就不行了- =
追答
TP因为是dos时代的产品,删除文件比较硬性,不顾及后果。所以漏洞多。
winnt平台通常不允许删除正在运行中的文件。正常做法是按卸载方法,给计划任务登记下次重启后自动删除。
自毁需要特别处理,用win的远程进程,主进程执行完退出后,远程进程进行删除。。。
正常的应用,就不要这么搞了。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式