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 に答える