Kasowanie katalogu po wypakowaniu z archiwum

problemy zwiÄ…zane z oprogramowaniem wszelkiego rodzaju.

Kasowanie katalogu po wypakowaniu z archiwum

Nowy postprzez Darek_C++ » wtorek, 2 wrzeÅ›nia 2008, 13:02

Jeśli w systemie XP:
- wypakujemy archiwum do katalogu o nazwie archiwum;
- otworzymy jakiÅ› plik z niego;
- plik zamkniemy;
- a następnie chcemy skasować ten katalog;
Pojawia siÄ™ okno wyjÄ…tku:
Schowek01.jpg


Choć wcale folder nie jest używany przez jakiś program. Jest to bardzo uciążliwe i w związku z tym chciał bym napisać programik który zniesie tą blokadę i będzie można katalog skasować...

Tylko kwestia jakim kodem C++ to obsłużyć ;)
PozdrawiaM
Nie masz wystarczających uprawnień, aby zobaczyć pliki załączone do tego postu.
Avatar użytkownika
Darek_C++
Elektrowied
Elektrowied
 
Posty: 454
Dołączył(a): piątek, 25 lipca 2008, 14:33
PodziÄ™kowaÅ‚ : 66
OtrzymaÅ‚ podziÄ™kowaÅ„: 4
System operacyjny: Windows XP Pro SP2
Kompilator: Turbo Explorer C++
Gadu Gadu: 0
    NieznanyNieznana

Re: Kasowanie katalogu po wypakowaniu z archiwum

Nowy postprzez geskom » wtorek, 2 wrzeÅ›nia 2008, 14:27

Podajesz za mało informacji: jak kasujesz katalog i jakiej wersji C++ Buildera używasz?, podaj swój kod...
Poniżej umieszczam metodę DeleteDirectory() na wykasowanie katalogu z plikami wyszukana z borland.public.cppbuilder.vcl.components.using ponieważ popularne RemoveDir() nie usunie katalogu jeśli są w nim pliki. Jeżeli chcesz złapać wszystkie błędy to należy podany kod umieścić w klauzurze try { ... } catch(...){}; np.

try
{
// tutaj jest nasz kod, np. kasujemy pliki
}
catch (...)
{
// tutaj łapiemy wszystkie wyjątki ale ich nie obsługujemy
}



void DeleteDirectory(HWND WindowHandle, AnsiString FromDir, bool Silent)
{
char ddFrom[256]; memset(ddFrom, 0, 256); sprintf(ddFrom, "%s\0\0", FromDir.c_str());
char *dFrom = ddFrom;

SHFILEOPSTRUCT ShFileOpStruct; memset(&ShFileOpStruct, 0, sizeof(SHFILEOPSTRUCT));

ShFileOpStruct.hwnd = WindowHandle;
ShFileOpStruct.wFunc = FO_DELETE;
ShFileOpStruct.pFrom = dFrom;
ShFileOpStruct.pTo = 0;
if (Silent) ShFileOpStruct.fFlags = FOF_NOCONFIRMATION + FOF_SILENT + FOF_ALLOWUNDO;
else ShFileOpStruct.fFlags = FOF_NOCONFIRMATION + FOF_ALLOWUNDO;
ShFileOpStruct.fAnyOperationsAborted = false;
ShFileOpStruct.hNameMappings = NULL;
ShFileOpStruct.lpszProgressTitle = NULL;

SHFileOperation(&ShFileOpStruct);
}
Avatar użytkownika
geskom
Bladawiec
Bladawiec
 
Posty: 2
Dołączył(a): wtorek, 2 września 2008, 14:12
PodziÄ™kowaÅ‚ : 0
OtrzymaÅ‚ podziÄ™kowaÅ„: 0
    NieznanyNieznana

Re: Kasowanie katalogu po wypakowaniu z archiwum

Nowy postprzez geskom » wtorek, 2 wrzeÅ›nia 2008, 14:32

Zapomniałem jeszcze o jednej kwestii. Jeżeli aplikacja aktualnie debugujemy to wyjątek będzie się zawsze pojawiał. Przynajmniej w BCB 6.0 :-)
Avatar użytkownika
geskom
Bladawiec
Bladawiec
 
Posty: 2
Dołączył(a): wtorek, 2 września 2008, 14:12
PodziÄ™kowaÅ‚ : 0
OtrzymaÅ‚ podziÄ™kowaÅ„: 0
    NieznanyNieznana

Re: Kasowanie katalogu po wypakowaniu z archiwum

Nowy postprzez Darek_C++ » wtorek, 2 wrzeÅ›nia 2008, 14:55

Widzę, że całkowicie mnie nie zrozumiałeś :)
Kasowanie katalogu odbywa się z poziomu systemu operacyjnego, a nie własnego programu. Własny program na odblokować jego możliwość...
Avatar użytkownika
Darek_C++
Elektrowied
Elektrowied
 
Posty: 454
Dołączył(a): piątek, 25 lipca 2008, 14:33
PodziÄ™kowaÅ‚ : 66
OtrzymaÅ‚ podziÄ™kowaÅ„: 4
System operacyjny: Windows XP Pro SP2
Kompilator: Turbo Explorer C++
Gadu Gadu: 0
    NieznanyNieznana

Re: Kasowanie katalogu po wypakowaniu z archiwum

Nowy postprzez banita » wtorek, 2 wrzeÅ›nia 2008, 16:13

jezeli nie jest to kwestia checi napisania takiego programu odblokowujacego to zainstaluj sobie ta aplikacje:
http://ccollomb.free.fr/unlocker/#download
dodaje opcje unlock do menu kontekstowego i wystaczy kliknac na takim pliku/katalogu i mamy z glowy.
Avatar użytkownika
banita
Kreacjusz
Kreacjusz
 
Posty: 283
Dołączył(a): poniedziałek, 28 lipca 2008, 20:07
PodziÄ™kowaÅ‚ : 1
OtrzymaÅ‚ podziÄ™kowaÅ„: 18
System operacyjny: Windows 7 Professional
Kompilator: C++Builder 2010 Update 5,
Delphi 2010 Update 5,
NetBeans 6.9(MinGw + Qt),
Visual Studio 2008 + Qt
Gadu Gadu: 0
    NieznanyNieznana

Re: Kasowanie katalogu po wypakowaniu z archiwum

Nowy postprzez Darek_C++ » wtorek, 2 wrzeÅ›nia 2008, 16:46

Hi, po części jest to też kwestia napisania własnej aplikacji, bo wiedziałem, że programy odblokowujące są dostępne.
Dzięki banita za link ;)

Pozdrawiam
Avatar użytkownika
Darek_C++
Elektrowied
Elektrowied
 
Posty: 454
Dołączył(a): piątek, 25 lipca 2008, 14:33
PodziÄ™kowaÅ‚ : 66
OtrzymaÅ‚ podziÄ™kowaÅ„: 4
System operacyjny: Windows XP Pro SP2
Kompilator: Turbo Explorer C++
Gadu Gadu: 0
    NieznanyNieznana

Re: Kasowanie katalogu po wypakowaniu z archiwum

Nowy postprzez Cyfrowy Baron » wtorek, 2 wrzeÅ›nia 2008, 18:12

Zrobiłem jak pisałeś:

W systemie XP:
    wypakowaÅ‚em archiwum do katalogu o nazwie archiwum;
    otworzyÅ‚em plik z niego;
    plik zamknÄ…Å‚em;
    a nastÄ™pnie skasowaÅ‚em katalog i katalog siÄ™ skasowaÅ‚ bez problemu

Co zrobiłem źle?!
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
PodziÄ™kowaÅ‚ : 12
OtrzymaÅ‚ podziÄ™kowaÅ„: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    NieznanyNieznana

Re: Kasowanie katalogu po wypakowaniu z archiwum

Nowy postprzez Darek_C++ » wtorek, 2 wrzeÅ›nia 2008, 18:28

Zauważyłem, że opisany problem występuje jeśli plik z wypakowanego archiwum wyślemy klientem FTP na serwer, lub ściągniemy archiwum z netu.
Avatar użytkownika
Darek_C++
Elektrowied
Elektrowied
 
Posty: 454
Dołączył(a): piątek, 25 lipca 2008, 14:33
PodziÄ™kowaÅ‚ : 66
OtrzymaÅ‚ podziÄ™kowaÅ„: 4
System operacyjny: Windows XP Pro SP2
Kompilator: Turbo Explorer C++
Gadu Gadu: 0
    NieznanyNieznana

Re: Kasowanie katalogu po wypakowaniu z archiwum

Nowy postprzez Cyfrowy Baron » wtorek, 2 wrzeÅ›nia 2008, 19:55

Nic z tych rzeczy u siebie nie stwierdziłem, ale ja używam do wypakowywania plików programu 'WinRAR', a wogóle to Explorera nie używam lecz 'Total Commander Ultima Prime', aczkolwiek opisany przez Ciebie problem testowałem za pomocą Explorera, lecz archiwa wypakowywałem przez 'WinRAR'.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
PodziÄ™kowaÅ‚ : 12
OtrzymaÅ‚ podziÄ™kowaÅ„: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    NieznanyNieznana

Re: Kasowanie katalogu po wypakowaniu z archiwum

Nowy postprzez banita » wtorek, 2 wrzeÅ›nia 2008, 20:33

to zachowanie nie jest regułą. ja również często miałem ten problem ale nie zawsze. to zjawisko nie dotyczy tylko archiwów, czasami po usunięciu programu zostaje pusty katalog którego nie można usunąć bez restartu komputera itp...
jak nietrudno się domyślić problem rozwiązuje programem z linka który zamieściłem w poście wyżej.
Avatar użytkownika
banita
Kreacjusz
Kreacjusz
 
Posty: 283
Dołączył(a): poniedziałek, 28 lipca 2008, 20:07
PodziÄ™kowaÅ‚ : 1
OtrzymaÅ‚ podziÄ™kowaÅ„: 18
System operacyjny: Windows 7 Professional
Kompilator: C++Builder 2010 Update 5,
Delphi 2010 Update 5,
NetBeans 6.9(MinGw + Qt),
Visual Studio 2008 + Qt
Gadu Gadu: 0
    NieznanyNieznana

Re: Kasowanie katalogu po wypakowaniu z archiwum

Nowy postprzez Darek_C++ » Å›roda, 3 wrzeÅ›nia 2008, 09:16

Wiec tak:

- ÅšciÄ…gnij jakiÅ› plik szablonu np. ze strony http://www.styleshout.com/free-templates.php;
- Wypakuj archiwum do katalogu o nazwie takiej jak plik archiwum;
- następnie Wyślij zawartość (katalog) po wypakowaniu na FTP;
- Spróbuj skasować plik zip{ten idzie}, ale już katalog jaki został utworzony po wypakowaniu już nie :(

Jeśli wypakujemy, ale nie wyślemy na FTP to można skasować. Co więcej nawet jak zamknę program- klienta FTP jakim wysyłałem dane na FTP też nie można skasować ....
Avatar użytkownika
Darek_C++
Elektrowied
Elektrowied
 
Posty: 454
Dołączył(a): piątek, 25 lipca 2008, 14:33
PodziÄ™kowaÅ‚ : 66
OtrzymaÅ‚ podziÄ™kowaÅ„: 4
System operacyjny: Windows XP Pro SP2
Kompilator: Turbo Explorer C++
Gadu Gadu: 0
    NieznanyNieznana

Re: Kasowanie katalogu po wypakowaniu z archiwum

Nowy postprzez Cyfrowy Baron » Å›roda, 3 wrzeÅ›nia 2008, 11:27

Zrobiłem wszystko dokładnie jak opisałeś i wszystko usunęło mi się bez żadnych problemów.
Używam klienta FTP wbudowanego w Total Commander.
Prawdopodobnie Twój klient FTP tworzy jakieś wpisy w rejestrze lub w katalogu który kopiujesz na serwer jakieś pliki z atrybutem systemowy i usługa lub jakiś proces tego klienta, który działa w tle nie pozwala usunąć takiego katalogu. U mnie nie występuje taki problem.

Spotkałem się tylko z czymś podobnym w przypadku plików ściąganych przez Torrent, gdy program do ściągania Torrentów był włączony a ja próbowałem usunąć plik znajdujący się na liście tego programu.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
PodziÄ™kowaÅ‚ : 12
OtrzymaÅ‚ podziÄ™kowaÅ„: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    NieznanyNieznana


  • Podobne tematy
    Odpowiedzi
    Wyświetlone
    Ostatni post

Powrót do Software

Kto przeglÄ…da forum

Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 2 gości

cron