Manip de fichiers

Résolu
cs_Zan Messages postés 174 Date d'inscription jeudi 18 avril 2002 Statut Membre Dernière intervention 25 mai 2006 - 2 déc. 2004 à 12:16
JulioDelphi Messages postés 2226 Date d'inscription dimanche 5 octobre 2003 Statut Membre 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

10 réponses

JulioDelphi Messages postés 2226 Date d'inscription dimanche 5 octobre 2003 Statut Membre Dernière intervention 18 novembre 2010 14
2 déc. 2004 à 12:30
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 !
3
ni69 Messages postés 1418 Date d'inscription samedi 12 juin 2004 Statut Membre Dernière intervention 5 juillet 2010 12
2 déc. 2004 à 12:31
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 ! :)
3
ni69 Messages postés 1418 Date d'inscription samedi 12 juin 2004 Statut Membre Dernière intervention 5 juillet 2010 12
2 déc. 2004 à 12:34
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 ! :)
0
JulioDelphi Messages postés 2226 Date d'inscription dimanche 5 octobre 2003 Statut Membre Dernière intervention 18 novembre 2010 14
2 déc. 2004 à 12:39
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 !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ni69 Messages postés 1418 Date d'inscription samedi 12 juin 2004 Statut Membre Dernière intervention 5 juillet 2010 12
2 déc. 2004 à 12:43
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 ! :)
0
DRJEROME Messages postés 436 Date d'inscription jeudi 9 janvier 2003 Statut Membre Dernière intervention 5 février 2015
2 déc. 2004 à 13:27
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
0
cs_Zan Messages postés 174 Date d'inscription jeudi 18 avril 2002 Statut Membre Dernière intervention 25 mai 2006
2 déc. 2004 à 13:58
quel rapidité de reponse !
merci merci ^^

Zan
0
JulioDelphi Messages postés 2226 Date d'inscription dimanche 5 octobre 2003 Statut Membre Dernière intervention 18 novembre 2010 14
2 déc. 2004 à 15:45
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 !
0
DRJEROME Messages postés 436 Date d'inscription jeudi 9 janvier 2003 Statut Membre Dernière intervention 5 février 2015
2 déc. 2004 à 16:16
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) ;)
0
JulioDelphi Messages postés 2226 Date d'inscription dimanche 5 octobre 2003 Statut Membre Dernière intervention 18 novembre 2010 14
3 déc. 2004 à 09:27
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 !
0
Rejoignez-nous