我有这个代码,
showmessage('C:\TEMP\'+openfiles[openfilelist.ItemIndex].ID); if removedir('C:\TEMP\'+openfiles[openfilelist.ItemIndex].ID) then showmessage('Removed') else showmessage('Failed');
消息显示C:\TEMP\0
并且该目录确实存在,因为程序先前创建它并使用其中的文件然后删除它们.我可以看到文件和目录,所以我知道他们在那里.程序成功删除文件但不删除目录.
如果我对其工作的目录进行硬编码 - 这意味着它接受字符串
C:\TEMP\0
但不接受C:\TEMP\'+openfiles[openfilelist.ItemIndex].ID
两者等同于C:\TEMP\0
.我无法对这些目录进行硬编码,所以我该怎么办?如何从字符串+字符串转换removedir()
为期望的字符串.我仔细研究了Delphi的基础知识,并期待一个字符串.
我很困惑,因为string + string = string.到底是怎么回事?
确保您的程序或任何其他程序都没有将该目录作为其当前工作目录.当您重新编译程序时,可能不再是这种情况,因此硬编码值对您来说可能是一个红色的鲱鱼.
除了其他好的答案之外,您不应该将您的临时文件夹存储在C:\ TEMP中.请改用GetTempFilename返回的值.与C:\ TEMP不同,此位置(因操作系统而异)将适用于所有操作系统以及所有级别的用户访问控制.这也消除了您硬编码的位置也可能被硬编码到另一个系统中的风险.