![]() |
Speicher u. Handle Fehler beim löschen von Cookies,Verlauf
Hallo
Ich nutze den Code aus der Code-Library um Cookies, Verläufe usw zu löschen
Delphi-Quellcode:
Wenn aber (wie ich glaube) sehr viele Cookies, Verläufe usw vorhanden sind
uses
WinInet; [...] procedure TForm1.Cookies1Click(Sender: TObject); var icei : PINTERNETCACHEENTRYINFO; dwSize : DWord; hSearch : DWord; begin CheckListBox1.Items.BeginUpdate; CheckListBox1.Items.Clear; dwSize := 65536; icei := AllocMem(dwSize); try hSearch := FindFirstURLCacheEntry('visited:',icei^,dwSize); if hSearch = 0 then begin ShowMessage(SysErrorMessage(GetLastError)+' '+IntToStr(dwSize)); exit; end; while hSearch <> 0 do begin Application.ProcessMessages; CheckListBox1.Items.Add(icei^.lpszSourceUrlName); dwSize := 65536; if not FindNextURLCacheEntry(hSearch,icei^,dwSize) then begin hSearch := 0; end; end; finally FreeMem(icei,65536); CheckListBox1.Items.EndUpdate; end; end; procedure TForm1.Lschen1Click(Sender: TObject); var i : integer; begin for i := 0 to CheckListBox1.Items.Count-1 do begin if CheckListBox1.Checked[i] then begin DeleteURLCacheEntry(PChar(CheckListBox1.Items[i])); end; end; Cookies1.Click; end; kommt die Fehlermeldung Systemressourcen erschöft, falscher Parameter und Handle falsch liegt das jetzt an dwSize := 65536 ist der zu klein bemessen? muß ich den grösser setzen oder kann ich ihn so setzen das er sich nimmt was er braucht. Oder wie gross darf der den max. sein? Homer |
Re: Speicher u. Handle Fehler beim löschen von Cookies,Verla
Moin Homer,
wird dieses ShowMessage ausgeführt:
Delphi-Quellcode:
wenn nicht, dürfte eigentlich kein Fehler vorliegen.
if hSearch = 0 then
begin ShowMessage(SysErrorMessage(GetLastError)+' '+IntToStr(dwSize)); exit; end; |
Re: Speicher u. Handle Fehler beim löschen von Cookies,Verla
nein wird nicht ausgeführt
Wie oben aber beschrieben - bei so 500-1000 Dateien kein Problem aber bei mehr kommt die Fehlermeldung oder wie ich meine wenn ich es 2-3 durchlaufen laße Aber hier mein Code nochmal - womöglich hab ich ja hier irgendwoein Fehler drin
Delphi-Quellcode:
//IE URLHistoryCache lesen Verläufe
Procedure IECache_URLHistory_Lesen_IECU(); var ie_cache : PINTERNETCACHEENTRYINFO; size_dw : DWord; cache_dir_dw : DWord; icon_list_il : HImageList; list_item_li : TListItem; file_info_fi : TSHFileInfo; begin //Icon laden //Haupt_Form.Wartung_Temp_ImageList1.Clear; icon_list_il := HImageList(SHGetFileInfo('', 0, file_info_fi, SizeOf(file_info_fi), SHGFI_SYSICONINDEX or SHGFI_ICON)); if (icon_list_il <> 0) then begin Haupt_Form.Icon_Cache_ImageList1.Handle := icon_list_il; Haupt_Form.Icon_Cache_ImageList1.Height := 16; Haupt_Form.Icon_Cache_ImageList1.Width := 16; end; //Alles löschen Haupt_Form.Wartung_ListView11.Items.Clear; size_dw := 65536; ie_cache := AllocMem(size_dw); try cache_dir_dw := FindFirstUrlCacheEntry(NIL, ie_cache^,size_dw); while cache_dir_dw <> 0 do begin Application.ProcessMessages; if ((ie_cache^.CacheEntryType AND URLHISTORY_CACHE_ENTRY) = URLHISTORY_CACHE_ENTRY) then begin //Name list_item_li := Haupt_Form.Wartung_ListView11.Items.Add; list_item_li.Caption := ie_cache^.lpszSourceUrlName; //Icon Haupt_Form.Wartung_ListView11.SmallImages.Handle := SHGetFileInfo(ie_cache^.lpszLocalFileName, 0, file_info_fi, SizeOf(file_info_fi), SHGFI_SYSICONINDEX or SHGFI_ICON); list_item_li.ImageIndex := file_info_fi.iIcon; //File Anzahl Haupt_Form.Wartung_Label10.Caption := IntToStr(list_item_li.Index + 1); //Suche Abbrechen If (g_flag_b = True) then begin g_flag_b := False; Break; end; end; size_dw := 65536; if not FindNextURLCacheEntry(cache_dir_dw,ie_cache^,size_dw) then begin cache_dir_dw := 0; end; end; finally FreeMem(ie_cache,65536); end; end; |
Re: Speicher u. Handle Fehler beim löschen von Cookies,Verla
Moin Homer,
eine Idee, hätte ich noch dazu. Deaktiviere mal, testeshalber, alle Zeilen, die sich auf die Icons beziehen. Ich habe so den Verdacht, dass es damit zu tun hat. Ausserdem noch etwas allgemeines: Eine boolsche Variable sollte man nicht direkt auf true/false prüfen:
Delphi-Quellcode:
schreib besser
If (g_flag_b = True) then
Delphi-Quellcode:
If g_flag_b then
|
Re: Speicher u. Handle Fehler beim löschen von Cookies,Verla
Hallo
Warum nicht direkt? Werde aber als erstes mal alles mit Icon raus nehmen Thx |
Re: Speicher u. Handle Fehler beim löschen von Cookies,Verla
Habe alles mit Icon raus genommen, läuft soweit
gibt es ne möglichkeit es drin zu lassen wenn ich size_dw := 65536 erhöhe? |
Re: Speicher u. Handle Fehler beim löschen von Cookies,Verla
Moin Homer,
meine Idee war, dass die Be-/Verarbeitung der Cache Einträge nicht den Fehler verursachen, sondern dass dieser durch die SHGetFileInfo Verwendung hervorgerufen wird, was ja Deine Aussage dann auch bestätigt hat. Da ja FindFirstURLCacheEntry keinen Fehler zurückgeliefert hat, wird auch die Veränderung der Buffergrösse nichts bewirken. Wo jetzt der Kinken bei SHGetFileInfo usw. ist habe ich aber noch nicht raus. Zumindest sieht es doch sehr danach aus, als würde hier die Ursache zu suchen sein. BTW: Üblicherweise sollte man boolsche Variablen so benennen, das ihre Bedeutung in einer Abfrage ohne direkten Vergleich ersichtlich wird, da es die Lesbarkeit erhöht. Für = false schreibt man ja auch "not Variablenname then" |
Re: Speicher u. Handle Fehler beim löschen von Cookies,Verla
Was mir bei dem Source noch aufgefallen ist (oder ich habs übersehen): Es fehlt FindCloseUrlCache
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:32 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