Ĺ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
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