Witam, napisalem procedurke ktora powinna usuwac katalogi. Fakt jest taki ze katalogi mozna usuwac tylko gdy sa puste w srodku ( trzeba wczesniej usunac wszystko co sie w nich znajduje) komenda rmdir (sciezka). Bez rekurencji sie tu nie obedzie i wiem ze na niej sie wlasnie wylozylem :]. Ok zamieszczam kodzik, jesli mozecie to napiszcie mi co w nim jest zle, tzn wiem ze cos skrzaczylem z ta rekurencja, ale jesli ktos wie co to niech napisze :).
procedure UsunKatalog (zrodlo : string);
var
SR: TSearchRec;
Fik : integer;
begin
zrodlo := zrodlo + '\';
Fik := FindFirst( zrodlo + '*.*', faArchive + faVolumeID + faSysFile + faHidden, SR);
while (Fik = 0) do // usun pliki
begin
DeleteFile (zrodlo + sr.Name);
Fik := FindNext(SR);
end;
Fik := FindFirst( zrodlo + '*.*', faReadOnly , SR);
while (Fik = 0) do
begin // usun pliki ktore sa tylko do odczytu i nie da sie
SetFileAttributes(PChar(zrodlo + sr.Name), $00000020 ); // usunac ich
DeleteFile (zrodlo + sr.Name); // powyzsza metoda
Fik := FindNext(SR);
end;
Fik := FindFirst( zrodlo + '*.', faDirectory, SR);
Fik := FindNext(SR); // pomin dwa pierwsze katalogi : ".\" i "..\"
Fik := FindNext(SR);
while (Fik = 0) do
begin // jesli istnieja to wejdz do podkatalogow i usun pliki
UsunKatalog (zrodlo + sr.Name); // no i rekurencja :D
Fik := FindNext(SR);
end;
FindClose(SR);
rmdir(zrodlo); // po kompilacji blad zawsze wskazuje mi na ta linijkie
end;
Ok jesli wiecie co tu jest nie tak to piszcie.