Создать несколько текстовых файлов - PullRequest
0 голосов
/ 29 июля 2011

Какой будет удобный способ создания нескольких файлов * .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;

Ответы [ 2 ]

4 голосов
/ 29 июля 2011

Если вы хотите создать только пустые файлы (или переписать существующие) с именами файлов, которые впоследствии будут пронумерованы, вы можете попробовать что-то вроде этого. В следующих примерах используется API-функция CreateFile . Но обратите внимание, что некоторые вещи могут запретить ваши попытки создания файла!

Если вы хотите создать (перезаписать) их при любых обстоятельствах, используйте флаг расположения 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;
3 голосов
/ 29 июля 2011

Примерно так, возможно:

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;
...