Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Ordnerinhalt löschen (https://www.delphipraxis.net/6122-ordnerinhalt-loeschen.html)

Chriss 30. Jun 2003 16:20


Ordnerinhalt löschen
 
Hi @ all!

Habe folgendes Problem:
Ich möchte gerne den Inhalt eines Ordners löschen, aber nicht den Ordner selber. Es geht um den Ordner "Temporary Internet Files". Ich weiss, wie man einzelne Dateien löscht, aber wie stelle ich das an, dass der GESAMTE Ihnalt gelöscht wird?!

DANKE

Chriss :coder:

Christian Seehase 30. Jun 2003 16:27

Moin Chriss,

schau Dir mal die API Funktion DeleteUrlCacheGroup an.
Damit könnte das (fast) gehen. Statt der einzelnen Einträge soll man damit Gruppen löschen können.

Alexander 30. Jun 2003 16:28

du muss, sofern es keine extra Funktion dafür gibt (kenne keine), alle Dateien mit einer Schleife nacheinander durch gehen. Soweit ich mich nicht täusche müsste dir da FindNext weiterhelfen

Chriss 30. Jun 2003 16:46

Zitat:

Zitat von alexander
du muss, sofern es keine extra Funktion dafür gibt (kenne keine), alle Dateien mit einer Schleife nacheinander durch gehen. Soweit ich mich nicht täusche müsste dir da FindNext weiterhelfen

*ähm* ja okay, aber woher will ich wissen, wie die erste datei in diesem ordner heisst?!
oder sollte ich eine erstellen, die garantiert ganz oben steht?!
und dann die frage: wie erstelle ich die datei?

Alexander 30. Jun 2003 16:50

Dann kuck dir mal FindFirst an ;-)

Chewie 30. Jun 2003 18:21

Nur so als Tip: Zumindest unter 2000 und XP dürfte es nicht klappen, die Cache-Dateien über FindFirst/Next und DeleteFile zu löschen. Bei den anderen Versionen bin ich mir nicht sicher, aber du solltest dir Christian Seehases Post nochmal ansehen.

Christian Seehase 30. Jun 2003 19:52

Moin Chriss,

bevor Du jetzt lange mit FindFirst/FindNext anfängst zu experimentieren:

Temporary Internet Files ist ein spezieller Systemfolder, der nicht mit den normalen Standardfunktionen bearbeitet werden kann.
Dafür wirst Du, aus der Unit WinInet die API Funktionen FindFirstUrlCacheEntry(Ex)/FindNextUrlCacheEntry(Ex) usw. benötigen.

Beispiele dafür solltest Du hier im Forum einige finden.
Weitere Einzelheiten kannst Du dem PSDK oder, online, dem MSDN (msdn.microsoft.com) entnehmen.

Alexander 1. Jul 2003 15:33

Mhm ok. Zum löschen der Temporary Internet Files gibt es anscheinend wirklich eine extra Funktion. Wieder was dazu gelernt...

eleonora 7. Jul 2003 14:51

Re: Ordnerinhalt löschen
 
Hallo Chris!

Hier der versprochene Code. Aber wie schon gesagt, der ist nicht von mir und ich weiss auch nicht mehr woher ich den habe! Sorry!


Code:
procedure DeleteIECache;
var
lpEntryInfo: PInternetCacheEntryInfo;
hCacheDir: LongWord;
dwEntrySize: LongWord;
begin
dwEntrySize := 0;
FindFirstUrlCacheEntry(nil, TInternetCacheEntryInfo(nil^), dwEntrySize);
GetMem(lpEntryInfo, dwEntrySize);
if dwEntrySize > 0 then lpEntryInfo^.dwStructSize := dwEntrySize;
hCacheDir := FindFirstUrlCacheEntry(nil, lpEntryInfo^, dwEntrySize);
if hCacheDir <> 0 then
begin
repeat
DeleteUrlCacheEntry(lpEntryInfo^.lpszSourceUrlName);
FreeMem(lpEntryInfo, dwEntrySize);
dwEntrySize := 0;
FindNextUrlCacheEntry(hCacheDir, TInternetCacheEntryInfo(nil^), dwEntrySize);
GetMem(lpEntryInfo, dwEntrySize);
if dwEntrySize > 0 then lpEntryInfo^.dwStructSize := dwEntrySize;
until not FindNextUrlCacheEntry(hCacheDir, lpEntryInfo^, dwEntrySize);
end;
FreeMem(lpEntryInfo, dwEntrySize);
FindCloseUrlCache(hCacheDir);
end;
Viel Spass dabei!

Gruss Eleonora


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:36 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz