[DELPHI] efffacer un répertoire

efffacer un répertoire [DELPHI] - Delphi/Pascal - Programmation

Marsh Posté le 29-09-2003 à 19:04:55    

Salut,
 
voilà, pour les besoins de mon prog, je voudrais pouvoir effacer le contenu d'un répertoire connaissant son nom (par exemple affacer e:\test\dvpt\', et eventuellement les ss-répertoire.
 
 
je sais que la fonction deletefile existe, mais elle marche à condition de connaitre le nom de tous les fichiers qu'il y a dans ce répertoire.
 
Merci


---------------
Matheux Fou - https://afficheur-tempo.fr - TEMPO BOX pour abonnés TEMPO EDF
Reply

Marsh Posté le 29-09-2003 à 19:04:55   

Reply

Marsh Posté le 29-09-2003 à 19:12:02    

Une petite recherche ?
 
http://forum.hardware.fr/forum2.ph [...] subcat=391
 
 [:ddr555]  
 
@++


---------------
The Only Way for Evils to Triumph is for Good Men to do Nothing @->-- Cours Réseaux@->-- Mon Site
Reply

Marsh Posté le 29-09-2003 à 20:14:06    

ben je vois pas en quoi ça va me servir !!! Je ne veux pa déplacer des ficheirs ! je veux effacer le contenu d'un répertoire !
 


---------------
Matheux Fou - https://afficheur-tempo.fr - TEMPO BOX pour abonnés TEMPO EDF
Reply

Marsh Posté le 29-09-2003 à 20:35:17    

soit via la fonction SHFileOperation de l'API Win32, soit en vidant manuellement le dossier avec un truc du genre :
 


function Deltree(sDir: string): Boolean;
var
  iIndex: Integer;
  SearchRec: TSearchRec;
  sFileName: string;
begin
  sDir := sDir + '\*.*';
  iIndex := FindFirst(sDir, faAnyFile, SearchRec);
  while iIndex = 0 do
  begin
    sFileName := ExtractFileDir(sDir) + '\' + SearchRec.Name;
    if SearchRec.Attr = faDirectory then
    begin
    if (SearchRec.Name <> '' ) and
       (SearchRec.Name <> '.') and
       (SearchRec.Name <> '..') then
       Deltree(sFileName);
    end else
    begin
      if SearchRec.Attr <> 0 then
        FileSetAttr(sFileName, 0);
      DeleteFile(sFileName);
    end;
    iIndex := FindNext(SearchRec);
  end;
  FindClose(SearchRec);
  RemoveDir(ExtractFileDir(sDir));
  Result := True;
end;
 


(je sais pas combien de fois j'ai posté cette fonction sur ce forum :D)


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 29-09-2003 à 22:36:57    

bon en fait j'ai résolu mon pb : j'ai crée sur ma form un filelistbox (qui est invisible). Je fais  
filelistbox.directory:=Monrepertoire que je veux effacer !
puis un filelistbox.count;
et un repeat until où je fais un deletefile(filelistbox.items[k]) ....
Voilà, bon si cela intéresse qq'un je poste ma routine demain.


---------------
Matheux Fou - https://afficheur-tempo.fr - TEMPO BOX pour abonnés TEMPO EDF
Reply

Marsh Posté le 29-09-2003 à 22:41:47    

Je pense que ta solution est une des pires que l'on puisse trouver :D
La solution que j'ai postée il y a 2h est à peu près la même chose au niveau programmation, mais 1000x plus légère au final :p


Message édité par antp le 29-09-2003 à 22:42:33

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 30-09-2003 à 07:57:56    

pourquoi dis-tu qu'elle est 1000x plus légère ?
Tout ce que je mets c'est un filelistbox !
Je ne vois pas en quoi cela alourdit le prg !


---------------
Matheux Fou - https://afficheur-tempo.fr - TEMPO BOX pour abonnés TEMPO EDF
Reply

Marsh Posté le 30-09-2003 à 09:04:22    

ben disons pas 1000x mais quand même pas loin, c'est comme écraser une mouche avec un semi-remorque au final tu as le même résultat mais c'est juste un poil plus lourd et moins élégant :d

Reply

Marsh Posté le 30-09-2003 à 10:06:26    

davidmarli a écrit :


Tout ce que je mets c'est un filelistbox !


 
y a toute la gestion de la liste, les handle utilisés, les ressources GDI (n'oublie pas que sous Win9x elles sont assez limitées), etc.

Reply

Marsh Posté le 30-09-2003 à 17:36:40    

ok d'accord. Merci
 
PS : c'est certain, dans mes prog, je ne cherche pas toujours le meilleur moyen d'arriver à mes fins ! C'est un tort bien sûr.
 
Je vais prendre ta fonction donc. Aller hop : copier-coller !
Encore merci.


---------------
Matheux Fou - https://afficheur-tempo.fr - TEMPO BOX pour abonnés TEMPO EDF
Reply

Marsh Posté le 30-09-2003 à 17:36:40   

Reply

Marsh Posté le 01-10-2003 à 09:10:13    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed