ďťż

Ładny brzuch

Witam!
Robię program w połowie do czyszczenia systemu i mam problem z wyczyszczeniem zawartości katalogu TEMP. Mam taki kod:

 with Rekord do  begin   Wnd:=Handle;   wFunc:=FO_DELETE;   pFrom:=PChar(Label18.Caption + '*.*');   fFlags:=FOF_NOCONFIRMMKDIR;  end;  if SHFileOperation(Rekord)<>0 then   ShowMessage('Błąd!')

Wszystko gra po skompilowaniu ale jak nacisnę guzik, który to wywoła to jest błąd.

Label18.Caption - Katalog TEMP'A który został wykrytu przej jedną z funkcji.
+ '*.*' - to ma dodać maskę kórą ma usuwać, ale ja chce żeby całą zawartość usuną wraz z folderami ale nie z tym głównym katalogiem.

Proszęo wszystkie wskazówki, linki do stron, pliki źródłowe, itp... Pozdro 4ALL!

Anonymous AdSoftadsoftt@o2.pl
gg:2283189



A nie lepiej FindFirst + FindNext + FindClose + DeleteFile ??

----
m@il: ali88@tlen.pl | GG: 2083160 | www: www.ali-home.prv.pl | ICQ: 199320712

Może i lepiej ale ja już mam wyszukany katalog a teraz mi powiedzcie jak pliki usunąć wraz z folderami :/

Anonymous AdSoftadsoftt@o2.pl
gg:2283189

Pomysł Ali'ego jest o wiele prostszy niż twój - ja też go polecam.



cytat:LewB ar napisał:

Pomysł Ali'ego jest o wiele prostszy niż twój - ja też go polecam.

A jak ja będe tak uparty jak osioł to coś mi zrobicie :P ...? [:/] No chyba nie... więc prosił bym o jakąś pomoc no a jeżeli jej nie uzyskam to niech już wam będzie to co Ali mówi tylko mi pomórz bo ja za dobry moze to ja nie jestem no ale chyba wystrczaąco... :)

Anonymous AdSoftadsoftt@o2.pl
gg:2283189

To prawda... Ali podał o wiele prostszy, lepszy i szybszy sposób...

YoYek Master Site - www.yoyek.kojot.prv.pl // Delphi NoN StoP

Zrobiłem tak tylko teraz mam problemy z folderami :(. Usuwa pliki w TEMP'ie ale folderów wogóle nie usuwa z zawartością oraz bez...

Anonymous AdSoftadsoftt@o2.pl
gg:2283189

rekurencja :) Jak znajdziesz folder to zaczynasz usuwać z niego pliki. Jak usuniesz pliki to usuwasz pusty folder. Jak zdąże to wyklepie procedurke...

----
m@il: ali88@tlen.pl | GG: 2083160 | www: www.ali-home.prv.pl | ICQ: 199320712

procedure FindFiles(dir: string); var  sr: TSearchRec;  res: integer; begin if dir[length(dir)] <> '' then dir:=dir+''; res:=FindFirst(dir+'*.*', faAnyFile, sr); while res = 0 do  begin  if (sr.Attr and faDirectory) <> 0 then    begin    if (sr.Name <> '..') and (sr.Name <> '.') then      begin      // To jest folder      FindFiles(dir+sr.Name+'');      // folder już powinien być pusty. Usuń go      DeleteDir(dir+sr.Name); // pisałem z pamięci, nie wiem, czy taka procedura istnieje, ale jak nie to wpisz tam jakąś inną :)      end;    end  else    begin    //tu instrukcje jeżeli to jest plik    DeleteFile(dir + sr.Name);    end;  res:=findNext(sr);  end; findclose(sr); end;

----
m@il: ali88@tlen.pl | GG: 2083160 | www: www.ali-home.prv.pl | ICQ: 199320712

Naprawdę wielkie dzięki Ali... Sprawdze sobie ten kod któregos dnia bo teraz czasu nie mam.

Anonymous AdSoftadsoftt@o2.pl
gg:2283189

cytat:DeleteDir(dir+sr.Name); // pisałem z pamięci, nie wiem, czy taka procedura istnieje, ale jak nie to wpisz tam jakąś inną :)
piwnno być:
RemoveDir(), lub krócej RmDir()

No i mam problem...

Przerobiłem ten kod:
if Label18.Caption[length(Label18.Caption)] <> '' then Label18.Caption:=Label18.Caption+''; res:=FindFirst(Label18.Caption+'*.*', faAnyFile, sr); while res = 0 do  begin  if (sr.Attr and faDirectory) <> 0 then    begin    if (sr.Name <> '..') and (sr.Name <> '.') then      begin      // To jest folder      FindFiles(Label18.Caption+sr.Name+'');      // folder już powinien być pusty. Usuń go      RemoveDir(Label18.Caption+sr.Name);      end;    end  else    begin    //tu instrukcje jeżeli to jest plik    RemoveDir(Label18.Caption + sr.Name);    end;  res:=findNext(sr);  end; findclose(sr);

Label18.Caption - to jest nazwa katalogu TEMP'A, bo inna procedura szuka tempa i wpisuje go do Caption Labela czyli mi wpisała C:WindowsTemp no i nie działa usuwanie :cry:

HELP ME!!!!!!!!!!

Anonymous AdSoftKontakt e-mail

procedure DelDir(dir: string); var  sr: TSearchRec;  res: integer; begin if dir[length(dir)] <> '' then dir:=dir+''; res:=FindFirst(dir+'*.*', faAnyFile, sr); while res = 0 do  begin  if (sr.Attr and faDirectory) <> 0 then    begin    if (sr.Name <> '..') and (sr.Name <> '.') then      begin      // To jest folder      FindFiles(dir+sr.Name+'');      // folder już powinien być pusty. Usuń go      RmDir(dir+sr.Name);      end;    end  else    begin    //tu instrukcje jeżeli to jest plik    DeleteFile(dir + sr.Name);    end;  res:=findNext(sr);  end; findclose(sr); end;

if Label18.Caption[length(Label18.Caption)] <> '' then Label18.Caption:=Label18.Caption+'';

DelDir(Label18.Caption);

I z czym masz problem :?

----
m@il: ali88@tlen.pl | GG: 2083160 | www: www.ali-home.prv.pl | ICQ: 199320712

No traz mi to się klei :) W razie jakiś problemów będe stukał :)

Anonymous AdSoftKontakt e-mail

Zrobiłem tak jak ty pisałeś ale jest do d***!!! Po kliknięciu na button usuwa pliki z TEMP'a - tylko pliki ale folderów nie usuwa i plików zawartych w tych folderach!!!!!

HELP ME!!

a może jakieś źródło macie na to pod PASCALA to bym poprostu w dosie to wykonał albo no nie wiem :(:cry:

Anonymous AdSoftKontakt e-mail

A spróbuj:

procedure DelDir(dir: string); var  sr: TSearchRec;  res: integer; begin if dir[length(dir)] <> '' then dir:=dir+''; res:=FindFirst(dir+'*.*', faAnyFile, sr); while res = 0 do  begin  if (sr.Attr and faDirectory) <> 0 then    begin    if (sr.Name <> '..') and (sr.Name <> '.') then      begin      // To jest folder      FindFiles(dir+sr.Name+'');      // folder już powinien być pusty. Usuń go      RmDir(dir+sr.Name);      end;    end  else    begin    //tu instrukcje jeżeli to jest plik    if not DeleteFile(dir + sr.Name) then      begin      showmessage('Nie moge usunąć: "'+dir + sr.Name+'" - nie moja wina');      end;    end;  res:=findNext(sr);  end; findclose(sr); end; if Label18.Caption[length(Label18.Caption)] <> '' then Label18.Caption:=Label18.Caption+''; DelDir(Label18.Caption);
i zobacz jak to zadziała....

----
m@il: ali88@tlen.pl | GG: 2083160 | www: www.ali-home.prv.pl | ICQ: 199320712

Sprawdze czy działa i mam pytanie... a sprawdzałeś czy to działa, czy ja to mam zrobić ;)

Anonymous AdSoftKontakt e-mail

Ja chyba mam pecha do programowania...
Niestety też nie działa jest tak samo jak powyżej kilka postów :cry:.

Anonymous AdSoftKontakt e-mail

procedure DelDir(dir: string); var  sr: TSearchRec;  res: integer; begin if dir[length(dir)] <> '' then dir:=dir+''; res:=FindFirst(dir+'*.*', faAnyFile, sr); while res = 0 do  begin  if (sr.Attr and faDirectory) <> 0 then    begin    if (sr.Name <> '..') and (sr.Name <> '.') then      begin      // To jest folder      DelDir(dir+sr.Name+'');      // folder już powinien być pusty. Usuń go      RmDir(dir+sr.Name);      end;    end  else    begin    //tu instrukcje jeżeli to jest plik    if not DeleteFile(dir + sr.Name) then      begin      showmessage('Nie moge usunąć: "'+dir + sr.Name+'" - nie moja wina');      end;    end;  res:=findNext(sr);  end; findclose(sr); end; procedure TForm1.Button1Click(Sender: TObject); begin deldir('c:windows emp'); showmessage('end'); end;

Działa na 100%

----
m@il: ali88[at]tlen[dot]pl | GG: 2083160 | www: www.ali-home.prv.pl | ICQ: 199320712

Nie wiem jak wy panowie - ale ja znająć podstawy przeksztauciłem kod Ali'ego na własne potrzeby 8) - POWODZENIA:cheesy:

//NEURON
//mariuszlorenc@wp.pl
//P4 3Ghz; 512Mb; GF FX 5200; 120Gb HDD

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • zsf.htw.pl
  •