Puste Katalogi

0

Jak zrobić program któruy będzie wyszukiwał puste Foldery i Usuwał JE.

W Easy Cleaner, jest List Box, jeśli usunę wiesz to ma się usunąć pusty katalog.--Delphi 2 , 6 i 5
Ciekawe pomysły i poszukiwanie rozwiązań.

0

To powinno działać i wyszukuje puste katalogi, ale za nic nie chce go usunąć ;(

procedure TForm1.ZnajdzPlik(Sciezka,NazwaPliku:String);
var

FSearchRec,DSearchRec:TSearchRec;
FindResult, liczba:integer;

function GetDirectoryName(Dir:String):String;
begin
if Dir[Length(Dir)]&lt&gt'\' then
Result:=dir+'\'
else
Result:=Dir;
end;

function IsDirNotation(AdirName:String):Boolean;
begin
Result:=(AdirName='.') or (AdirName='..');
end;

begin
Sciezka:=GetDirectoryName(Sciezka);
liczba:=0;
FindResult:=FindFirst(Sciezka+NazwaPliku,faAnyFile+faHidden+faSysFile+faReadOnly+faDirectory,FSearchRec);
try
while FindResult = 0 do
begin
Inc(liczba);
Memo1.Lines.Add(Sciezka+FsearchRec.Name);
FindResult:=FindNext(FSearchRec);
end;
if liczba&lt=2 then begin
Delete(sciezka,length(sciezka),1);
RemoveDir(sciezka); //dlaczego to nie usuwa?????????
end;

FindResult:=FindFirst(Sciezka+'.',faDirectory,DSearchRec);
while FindResult=0 do
begin
if ((DSearchRec.Attr and faDirectory)=faDirectory) and not IsDirNOtation(DSearchRec.Name) then
ZnajdzPlik(Sciezka+DSearchRec.Name,NazwaPliku);
FindResult:=FindNext(DSearchRec);
end;
finally
FindClose(FSearchRec);
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
ZnajdzPlik('c:\temp','.');
end;

Może znajdziesz rozwiązanie problemu. Ja mogę tylko tyle Ci pomóc--Jest jeszcze jeden błąd ... :)

--------------Blok reklamowy :) -----
| kanał: #4programmers.net |
| w sieci POLNet |
| serwer np.: warszawa.ircnet.pl |

0

Ja ci moge napisac jak usunac katalogi uzywajac starego i dobrego dosa :-) A wiec:

var
f:textfile;
begin
assignfile(f,'c:\zabijkataloi.bat');
rewrite(f);
writeln(f, 'rm '+sciezkakatalogu);*jezeli katalog jest pusty to zostanie usuniety a jak nie to zostanie
writeln(f,...)*dodajesz tyle katalogow ile chcesz
closefile(f);
winexec('c:\zabijkataloi.bat',sw_hide);
end;

pislaem z pamieci wiec pewnie sa jakies bledy ale ten pomysl jest dobry (tak mi sie wydaje) :-) nie pytaj sie mnie jak zdobyc liste katalogw.

--
pozdrawiam PEDROS {hello}
PROPAGANDA: Uzywajcie irca i badzcie na kanale 4programmers.net
Delphi6

0

Dryobates: A u mnie usuwa...

Czy do manipulowania koncowym \ nie lepiej uzywac gotowych funkcji:
IncludeTrailingPathDelimiter
ExcludeTrailingPathDelimiter
IsPathDelimiter

itd?

--
Pawel {Delphi6 }

Po pierwsze: naciśnij F1

0

pq napisał:
Dryobates: A u mnie usuwa...
&gt
&gtCzy do manipulowania koncowym \ nie lepiej uzywac gotowych funkcji:
&gtIncludeTrailingPathDelimiter
&gtExcludeTrailingPathDelimiter
&gtIsPathDelimiter
&gt
&gtitd?

U mnie nie usuwa ;( , może dlatego, że mam WinXP :[[

A z tych funkcji to jest tylko IsPathDelimiter
Ale znalazłem
IncludeTrailingBackslash
ExcludeTrailingBackslash

Ale dzięki, że o czymś takim mi powiedziałeś. Nigdy wcześniej nie korzystałem z tych funkcji. Człowiek uczy się przez całe życie. (a conajmniej połowy potrzebuje, żeby przeczytać całą pomoc :) )--Jest jeszcze jeden błąd ... :)

--------------Blok reklamowy :) -----
| kanał: #4programmers.net |
| w sieci POLNet |
| serwer np.: warszawa.ircnet.pl |

0

Z mojego helpa na temat IncludeTrailingBackslash:

IncludeTrailingBackslash ensures that a path name ends with a trailing path delimiter ('\'). This function is included for backward-compatibility only. New programs should use IncludeTrailingPathDelimiter.

Nie znalazles? Moze masz Delphi &lt6 ?

Pozdrawiam--Pawel {Delphi6 }

Po pierwsze: naciśnij F1

0

pq napisał:
&gtNie znalazles? Moze masz Delphi &lt6 ?

Delphi 5 Standard ;( ;( ;( ;(
Stanę na głowie, ale zdobędę Delphi 6 Enterprise :D

Aaaaa znalazłem dlaczego ta procedurka nie chciała kasować:
I/O 32 - plik już otawarty i używany przez inną aplikację :)

Jest jeszcze jeden błąd ... :)

--------------Blok reklamowy :) -----
kanał: #4programmers.net
w sieci POLNet
serwer np.: warszawa.ircnet.pl

1 użytkowników online, w tym zalogowanych: 0, gości: 1