tsipouro Δημοσ. 13 Μαΐου 2004 Δημοσ. 13 Μαΐου 2004 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! :?
panospc Δημοσ. 13 Μαΐου 2004 Δημοσ. 13 Μαΐου 2004 Σου δίνω ένα 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 να διαγράψεις όλα τα αρχεία που βρίσκονται μέσα στο φάκελο. Τώρα αυτή τη στιγμή δεν έχω χρόνο να σου γράψω πολλά. Εάν έχεις απορίες πες το μου για να σου δώσω ένα παράδειγμα με περισσότερες λεπτομέρειες
damn3 Δημοσ. 13 Μαΐου 2004 Δημοσ. 13 Μαΐου 2004 > 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;
tsipouro Δημοσ. 14 Μαΐου 2004 Μέλος Δημοσ. 14 Μαΐου 2004 pw pw!! damn3 m' eftiakses!! se efxaristw pliiiiiiiiiii panospc thnx u2!
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.