2011-07-28 7 views
0

ce qui serait une manière soignée de créer plusieurs fichiers * .txt sur l'application démarrage c.-à-vérifier s'ils existent s'ils ne les créent pas. Je dois créer environ 10 fichiers texte. Est-ce que je dois faire comme ceci pour chaque fichier:Créer plusieurs fichiers texte

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

Vous ne mentionnez pas votre version Delphi. Si vous êtes sur D2009 +, il est conseillé (par Delphi) d'utiliser des flux à la place des "anciennes" méthodes de fichiers Pascal car celles-ci ne prennent pas en charge Unicode. –

+3

Au lieu des flux, vous pouvez utiliser 'FileCreate()' à la place. –

Répondre

3

Quelque chose comme ça, peut-être:

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; 
+0

Merci ... fonctionne bien ... – user763539

4

Si vous voulez seulement créer les fichiers vides (ou réécrire l'existant) avec la suite noms de fichiers numérotés, vous pourriez essayer quelque chose comme ça. Les exemples suivants utilisent la fonction API CreateFile. Mais faites attention que plusieurs choses peuvent interdire vos tentatives de création de fichiers!

Si vous voulez créer (Ecraser) les en toutes circonstances, utiliser CREATE_ALWAYS disposition drapeau

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; 

Ou si vous voulez créer les fichiers que si elles n'existent pas, utilisez le drapeau de la disposition 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; 
Questions connexes