0

アプリケーションの起動時に複数の *.txt ファイルを作成するための適切な方法は何でしょう。つまり、作成されていない場合は存在するかどうかを確認します。約 10 個のテキスト ファイルを作成する必要があります。すべてのファイルに対して次のようにする必要がありますか?

var
  MyFile: textfile;
  ApplicationPath: string;
begin
  ApplicationPath := ExtractFileDir(Application.ExeName);
  if not FileExists(ApplicationPath + '\a1.txt') then
    begin
      AssignFile(MyFile, (ApplicationPath + '\a1.txt'));
      Rewrite(MyFile);
      Close(MyFile);
    end
  else 
    Abort;
end;
4

3 に答える 3

4

空のファイルを作成したい (または既存のものを書き換えたい) だけで、その後に番号が付けられたファイル名を付けたい場合は、次のようなことを試してみてください。次の例では、CreateFile API 関数を使用しています。ただし、ファイル作成の試行を禁止する可能性があることに注意してください。

すべての状況でそれらを作成 (上書き) したい場合は、CREATE_ALWAYS ディスポジション フラグを使用します。

procedure TForm1.Button1Click(Sender: TObject);
var
  I: Integer;
  Name: string;
  Path: string;
begin
  Path := ExtractFilePath(ParamStr(0));
  for I := 1 to 10 do
    begin
      Name := Path + 'a' + IntToStr(I) + '.txt';
      CloseHandle(CreateFile(PChar(Name), 0, 0, nil, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0));
    end;
end;

または、ファイルが存在しない場合にのみファイルを作成する場合は、CREATE_NEW ディスポジション フラグを使用します。

procedure TForm1.Button1Click(Sender: TObject);
var
  I: Integer;
  Name: string;
  Path: string;
begin
  Path := ExtractFilePath(ParamStr(0));
  for I := 1 to 10 do
    begin
      Name := Path + 'a' + IntToStr(I) + '.txt';
      CloseHandle(CreateFile(PChar(Name), 0, 0, nil, CREATE_NEW, FILE_ATTRIBUTE_NORMAL, 0));
    end;
end;
于 2011-07-29T00:13:21.497 に答える
3

おそらく、次のようなものです。

var
    ApplicationDir: string;
    I: Integer;
    F: TextFile;
begin
    ApplicationDir := ExtractFileDir(Application.ExeName);
    for I := 1 to 10 do
      begin
        Path := ApplicationDir + '\a' + IntToStr(I) + '.txt';
        if not FileExists(Path) then
          begin
            AssignFile(F, Path);
            Rewrite(F);
            Close(F);
          end
      end;
于 2011-07-28T23:50:36.080 に答える