Manip de fichiers [Résolu]

Messages postés
174
Date d'inscription
jeudi 18 avril 2002
Statut
Membre
Dernière intervention
25 mai 2006
- - Dernière réponse : JulioDelphi
Messages postés
2226
Date d'inscription
dimanche 5 octobre 2003
Statut
Modérateur
Dernière intervention
18 novembre 2010
- 3 déc. 2004 à 09:27
bonjour,

existe-t-il une bibliotheque de manipulation de fichier et de repertoire simple !

pour par exemple supprimer un repertoire du disque sans devoir supprimer son contenu avant ?

Zan
Afficher la suite 

10 réponses

Meilleure réponse
Messages postés
2226
Date d'inscription
dimanche 5 octobre 2003
Statut
Modérateur
Dernière intervention
18 novembre 2010
12
3
Merci
pour effacer un dossier sans devoir supprimer son contenu :
http://diabloporc.free.fr/astuces.php#effacerdossier

sinon pour effacer un fichier deleteFile(), renommer renameFile(), verifier l'existance FileExists(), je crois ke c sysutils.pas qui contient ça, a confirmer !

ps : fait F1 sur une de ces fonctions, tu auras de l'aide sur les autres :)

N'oubliez pas de cliquer sur Réponse acceptée lorsque la réponse vous convient ! ;)

-------------------------------------------
http://diabloporc.free.fr : mon site refait ! Delphi power !

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 203 internautes nous ont dit merci ce mois-ci

Commenter la réponse de JulioDelphi
Messages postés
1418
Date d'inscription
samedi 12 juin 2004
Statut
Membre
Dernière intervention
5 juillet 2010
8
3
Merci
Renommer un fichier :
RenameFile('c:\MonFichier1.txt','c:\MonFichier2.txt');


Créer un répertoire dans un autre existant :
CreateDirectory('c:\MonRepertoire',nil);


Créer une arborescence de répertoires :
ForceDirectories('C:\MonRepertoire\SousDossier1\Sousdossier2');


Déplacer un repertoire et tous ses sous-répertoires :
MoveFileEx('c:\MonRepertoire\','a:\MonRepertoire',MoveFile_Copy_Allowed);


Déplacer un fichier :
MoveFile('c:\MonRepertoire.txt','a:\MonRepertoire.txt');


Supprimer un fichier :
DeleteFile('c:\MonFichier.txt');


Tester l'existance d'un fichier :
if FileExists('c:\MonFichier.txt') then
  ShowMessage('Ce fichier existe')
else
  ShowMessage('Ce fichier n''existe pas');


Tester l'existance d'un répertoire:
if DirectoryExists('c:\MonFichier.txt') then
  ShowMessage('Ce dossier existe')
else
  ShowMessage('Ce dossier n''existe pas');


Copier un fichier :
CopyFile('c:\MonFichier1.txt','c:\MonFichier2.txt',true);


Cacher dossier :
setfileattributes('C:\MonRepertoire',FILE_ATTRIBUTE_HIDDEN);


Réafficher dossier :
setfileattributes('C:\MonRepertoire',FILE_ATTRIBUTE_NORMAL);


Supprimer un répertoire plein (supprime tous les fichiers les uns après les autres et ensuite supprime le répertoire vide) :
var 
  Dir: TSearchRec; 
  a : Integer; 
begin 
  a := FindFirst('C:\MonRepertoire\*.*', FaAnyfile, Dir); 
  while a = 0 do 
    begin 
    if ((Dir.Attr and FaDirectory <> FaDirectory) and (Dir.Attr and FaVolumeId <> FaVolumeID)) then 
      if DeleteFile(pChar('C:\repertoire' + Dir.Name))= false then 
      ShowMessage('Destruction impossible'); 
    a := FindNext(Dir); 
    end; 
  SysUtils.FindClose(Dir); 
  if RemoveDirectory('C:\repertoire') = false then ShowMessage('Destruction impossible'); 
end;


Voilà... :)

@+
Bonne Prog'
Nico

N'oubliez pas de cliquer sur Réponse acceptée lorsque la réponse vous convient ! :)

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 203 internautes nous ont dit merci ce mois-ci

Commenter la réponse de ni69
Messages postés
1418
Date d'inscription
samedi 12 juin 2004
Statut
Membre
Dernière intervention
5 juillet 2010
8
0
Merci
Dsl j'ai fait une erreur... Pour tester l'existance d'un répertoire:
if DirectoryExists('c:\MonRepertoire') then
ShowMessage('Ce dossier existe')
else
ShowMessage('Ce dossier n''existe pas'); 


Voilà c'est corrigé ! ;)

@+
Bonne Prog'
Nico

N'oubliez pas de cliquer sur Réponse acceptée lorsque la réponse vous convient ! :)
Commenter la réponse de ni69
Messages postés
2226
Date d'inscription
dimanche 5 octobre 2003
Statut
Modérateur
Dernière intervention
18 novembre 2010
12
0
Merci
ni69 : regarde mon code pour supprimer un dossier non vide :p

N'oubliez pas de cliquer sur Réponse acceptée lorsque la réponse vous convient ! ;)

-------------------------------------------
http://diabloporc.free.fr : mon site refait ! Delphi power !
Commenter la réponse de JulioDelphi
Messages postés
1418
Date d'inscription
samedi 12 juin 2004
Statut
Membre
Dernière intervention
5 juillet 2010
8
0
Merci
Effectivement, c'est beaucoup plus pratique ! ;)
Merci !

@+
Bonne Prog'
Nico

N'oubliez pas de cliquer sur Réponse acceptée lorsque la réponse vous convient ! :)
Commenter la réponse de ni69
Messages postés
436
Date d'inscription
jeudi 9 janvier 2003
Statut
Membre
Dernière intervention
5 février 2015
0
Merci
si tu veux effacer un dossier plein sans faire une boucle, on peut le faire en une ligne de code :

admettons que ton dossier s'appelle "TRUC" situé dans C:\TRUC

if DirectoryExists('C:\TRUC') then ShellExecute(Handle,'open','cmd.exe','/C RMDIR/Q/S  C:\TRUC',0,SW_HIDE);


n'oublie pas de mettre Shellapi dans tes uses

ça effacera tous les sous-dossiers sans faire une boucle FindFirst /FindNext

Ce code marche bien du moment qu'aucun fichier de celui -ci n'est en cours d'utilisation (idem pour le code de nino69)

DrJerome
Commenter la réponse de DRJEROME
Messages postés
174
Date d'inscription
jeudi 18 avril 2002
Statut
Membre
Dernière intervention
25 mai 2006
0
Merci
quel rapidité de reponse !
merci merci ^^

Zan
Commenter la réponse de cs_Zan
Messages postés
2226
Date d'inscription
dimanche 5 octobre 2003
Statut
Modérateur
Dernière intervention
18 novembre 2010
12
0
Merci
DRJEROME et si l'utilisateur est sous win 98, il n'auras pas cmd.exe mais command.com, et si il n'a pas les droits pour executer une commande DOS, il l'a dans l'OS (pas operating system hein, un os lol)
donc, sans faire de boucle, look at my code :p

N'oubliez pas de cliquer sur Réponse acceptée lorsque la réponse vous convient ! ;)

-------------------------------------------
http://diabloporc.free.fr : mon site refait ! Delphi power !
Commenter la réponse de JulioDelphi
Messages postés
436
Date d'inscription
jeudi 9 janvier 2003
Statut
Membre
Dernière intervention
5 février 2015
0
Merci
JulioDelphi, tu as oublié de citer l'auteur : Thomas Davenport (entre-autre, qui lui même l'a pompé dans un autre langage), il vaut mieux citer les références...

Maintenant, tu fais un dossier avec des sous-dossiers (que tu appelle comme tu veux). Tu mets dans un des sous-dossiers un fichier word (càd .doc), par exemple. tu l'ouvre pour qu'il soit en mode utilisation, essaie la fameuse fonction que tu as plagiée et... surprise... tu ne peux pas effacer les dossiers en amont il faut fermer le dossier word et recommencer l'opération.

Si tu veux faire quelque chose de personnel , essaie de réglér ce problème et tu auras tous les honneurs (si tu y arrives sans boucle, chapeau) ;)
Commenter la réponse de DRJEROME
Messages postés
2226
Date d'inscription
dimanche 5 octobre 2003
Statut
Modérateur
Dernière intervention
18 novembre 2010
12
0
Merci
Thomas Davenport est membre codes-sources ? jamais vu ! les codes qui se trouvent ds "mes astuces" sont les astuces que j'utilise, je n'en ai pas créé plus d'une je pense... mais stop les "c pompé" "c pas a toi" "c du plagiat" etc ... c du code partagé dans une communauté, je le recup, et je repartage, je ne me l'aproprie pas. qd je dis "mes astuces" sur mon site, ça veut juste dire que ce sont celles que j'utilise... dsl pour l'ambiguité, je ferais la modif sur mon site pour le preciser mieux alors :)

sinon il est 100% vrai que si word est ouvert avec mon doc ds le dossier... aie aie aie ! disons ke windows n'est pas reelemment multitache et kon ferme avant de supprimer alors :D lol comme ça pas de pb :p

N'oubliez pas de cliquer sur Réponse acceptée lorsque la réponse vous convient ! ;)

-------------------------------------------
http://diabloporc.free.fr : mon site refait ! Delphi power !
Commenter la réponse de JulioDelphi