1

我有一个简单的应用程序:

uses
  SysUtils;

{$R *.res}

procedure Log(text: string);
var
  myFile: textfile;
begin
  AssignFile(myFile, 'my.log');
  if not(FileExists('my.log')) then
    Rewrite(myFile)
  else
    Append(myFile);
  Writeln(myFile, text);
  CloseFile(myFile);
end;

begin
    Log(TimeToStr(Now)+' Passed!');
end.

当我尝试通过 Windows 任务计划程序启动此应用程序时,我遇到了问题。计划任务的状态为“正在运行”,但没有任何反应。

4

1 回答 1

2

您需要提供保存文件的完整路径。当 Windows 任务调度程序启动您的应用程序时,您的应用程序的工作目录将是任务调度程序应用程序所在的任何位置。反过来,Windows 不允许您的应用程序将文件保存在该位置。因此,您必须准确告诉它保存文件的位置。

procedure Log(text: string);
var
  myFile: textfile;
  Filename: String;
begin
  Filename:= IncludeTrailingBackslash(ExtractFilePath(ParamStr(0)))+'my.log';
  AssignFile(myFile, Filename);
  if not(FileExists(Filename)) then
    Rewrite(myFile)
  else
    Append(myFile);
  Writeln(myFile, text);
  CloseFile(myFile);
end;

我假设 Windows 由于您的标题“冻结”而拒绝访问。尽管如此,即使问题不是拒绝访问,您仍然不知道该位置在哪里。

于 2013-03-11T06:03:24.147 回答