Προς το περιεχόμενο

Delphi kai Deletefiles


tsipouro

Προτεινόμενες αναρτήσεις

Δημοσ.

Hello ppl!!

Aporia:

Pws mporw na diagrapsw arxeia apo ena fakelo, xwris na kserw poia h kai posa arxeia exei mesa?

'H akomi kalitera, pws ginetai na diaolostilw ena %&@$&%-folder pou exei arxeia mesa tou? H RemoveDir to kanei mono an o fakelos einai adeios...

 

Thnx in advance!

:?

Δημοσ.

Σου δίνω ένα procedure που σου επιστρέφει όλα τα αρχεία που υπάρχουν σε ένα φάκελο.

 

>procedure GetFiles(const ADirectory: string; Files: TStrings; SubFolders: Boolean);
 function SlashSep(const Path, S: string): string;
 begin
   if AnsiLastChar(Path)^ <> '\' then
     Result := Path + '\' + S
   else
     Result := Path + S;
 end;
var
 SearchRec: TSearchRec;
 nStatus: Integer;
begin
 nStatus := FindFirst(PChar(SlashSep(ADirectory, '*.*')),  0, SearchRec);
 while nStatus = 0 do
 begin
   If AnsiRightStr(ExtractFileName(SlashSep(ADirectory, SearchRec.Name)),3) = 'png' then
     Files.Add(ExtractFileName(SlashSep(ADirectory, SearchRec.Name)));
   nStatus := FindNext(SearchRec);
 end;
 FindClose(SearchRec);
 if SubFolders then
 begin
   nStatus := FindFirst(PChar(SlashSep(ADirectory, '*.*')), faDirectory,
     SearchRec);
   while nStatus = 0 do
   begin
     if ((SearchRec.Attr and faDirectory) <> 0) then
     begin
       if ( (SearchRec.Name <> '.') and (SearchRec.Name <> '..') )  then
         GetFiles(SlashSep(ADirectory, SearchRec.Name), Files, SubFolders);
     end;
     nStatus := FindNext(SearchRec)
   end;
   FindClose(SearchRec);
 end;
end;

 

Με αυτό μπορείς να πάρεις όσα αρχεία υπάρχουν μέσα σε ένα φάκελο που θα ορίσεις. Μπορείς να χρησημοποιήσεις ένα απλό listbox για να δεις ποια αρχεία υπάρχουν σε ένα φάκελο και μετά με ένα απλό for loop να διαγράψεις όλα τα αρχεία που βρίσκονται μέσα στο φάκελο. Τώρα αυτή τη στιγμή δεν έχω χρόνο να σου γράψω πολλά. Εάν έχεις απορίες πες το μου για να σου δώσω ένα παράδειγμα με περισσότερες λεπτομέρειες

Δημοσ.
>
uses
 ShellAPI;

procedure RemoveDir(AHandle: THandle; const ADirName: String);
var
 SHFileOpStruct: TSHFileOpStruct;
 DirName: PChar;
 BufferSize: Cardinal;
begin
 BufferSize := Length(ADirName) +1 +1;
 GetMem(DirName, BufferSize);
 try
   FillChar(DirName^, BufferSize, 0);
   StrCopy(DirName, PChar(ADirName));

   with SHFileOpStruct do
   begin
     Wnd := AHandle;
     wFunc := FO_DELETE;
     pFrom := DirName;
     pTo := nil;
     fFlags := FOF_NOCONFIRMATION + FOF_SILENT;

     fAnyOperationsAborted := False;
     hNameMappings := nil;
     lpszProgressTitle := nil;
   end;

   SHFileOperation(SHFileOpStruct)
 finally
   FreeMem(DirName, BufferSize);
 end;
end;

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...