当我在IDE中启动一个程序时,我使用以下代码生成一个日志文件。所有的路径都是正确的,用F8检查,但是日志文件没有输出。
当我在IDE外运行可执行文件时,日志文件可以正常输出。
在XE7中是否有禁止此操作的设置?
procedure LogProgram(const aEvent: String);
var
TheLogFileName, TheLogLine: String;
TheLogFile: TextFile;
TheDay, TheMonth, TheYear, TheHour, TheMinute, TheSecond,
TheMilliSecond: Word;
begin
TheLogFileName := Format('%s%d.log', [usPATH_LOGS, Trunc(Now)]);
AssignFile(TheLogFile, TheLogFileName);
if not FileExists(TheLogFileName) then
Rewrite(TheLogFile);
Append(TheLogFile);
DecodeDateTime(Now, TheYear, TheMonth, TheDay, TheHour, TheMinute, TheSecond,
TheMilliSecond);
TheLogLine := Format('%d-%d-%d: %d:%d:%d:%d%s%s', [TheYear, TheMonth, TheDay,
TheHour, TheMinute, TheSecond, TheMilliSecond, #9, aEvent]);
Writeln(TheLogFile, TheLogLine);
CloseFile(TheLogFile);
end;
我试图输出一个文件,使用上面的代码,而一个程序在Delphi XE7 IDE中运行,期望一个日志(文本)文件,没有得到输出。在IDE之外运行相同的程序会正确生成日志(文本)文件。
@fpiette我检查了Windows安全性和文件夹保护未激活
@Andreas-Rejbrand我使用相对路径。相对于可执行文件
的路径计算路径我没有通过菜单Run->Parameters改变Delphi中的任何东西. 这里没有路径列表我做了一个全局搜索(在我的计算机上)的文件名,我试图创建并发现它在一个包含文件夹(c:VTRoot)由Comodo防病毒管理。
事实证明,如果科莫多认为正在创建的文件存在安全风险,则将其移至C:
的收容区域。我去了Comodo仪表板并禁用了Auto-Containment,现在Delphi XE7可以正常工作了。