AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Speicher u. Handle Fehler beim löschen von Cookies,Verlauf

Speicher u. Handle Fehler beim löschen von Cookies,Verlauf

Ein Thema von HomerGER · begonnen am 11. Aug 2004 · letzter Beitrag vom 1. Nov 2006
Antwort Antwort
Benutzerbild von HomerGER
HomerGER

Registriert seit: 8. Jun 2003
390 Beiträge
 
Delphi 7 Professional
 
#1

Speicher u. Handle Fehler beim löschen von Cookies,Verlauf

  Alt 11. Aug 2004, 10:00
Hallo
Ich nutze den Code aus der Code-Library um Cookies, Verläufe usw zu löschen
Delphi-Quellcode:
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;
Wenn aber (wie ich glaube) sehr viele Cookies, Verläufe usw vorhanden sind
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
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.262 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Speicher u. Handle Fehler beim löschen von Cookies,Verla

  Alt 11. Aug 2004, 15:04
Moin Homer,

wird dieses ShowMessage ausgeführt:

Delphi-Quellcode:
    if hSearch = 0 then
    begin
      ShowMessage(SysErrorMessage(GetLastError)+' '+IntToStr(dwSize));
      exit;
    end;
wenn nicht, dürfte eigentlich kein Fehler vorliegen.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von HomerGER
HomerGER

Registriert seit: 8. Jun 2003
390 Beiträge
 
Delphi 7 Professional
 
#3

Re: Speicher u. Handle Fehler beim löschen von Cookies,Verla

  Alt 11. Aug 2004, 20:11
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;
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.262 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Speicher u. Handle Fehler beim löschen von Cookies,Verla

  Alt 12. Aug 2004, 17:49
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:

If (g_flag_b = True) then schreib besser

If g_flag_b then
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von HomerGER
HomerGER

Registriert seit: 8. Jun 2003
390 Beiträge
 
Delphi 7 Professional
 
#5

Re: Speicher u. Handle Fehler beim löschen von Cookies,Verla

  Alt 12. Aug 2004, 18:18
Hallo
Warum nicht direkt?
Werde aber als erstes mal alles mit Icon raus nehmen

Thx
  Mit Zitat antworten Zitat
Benutzerbild von HomerGER
HomerGER

Registriert seit: 8. Jun 2003
390 Beiträge
 
Delphi 7 Professional
 
#6

Re: Speicher u. Handle Fehler beim löschen von Cookies,Verla

  Alt 14. Aug 2004, 15:58
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?
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.262 Beiträge
 
Delphi 2006 Professional
 
#7

Re: Speicher u. Handle Fehler beim löschen von Cookies,Verla

  Alt 14. Aug 2004, 18:11
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"
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#8

Re: Speicher u. Handle Fehler beim löschen von Cookies,Verla

  Alt 1. Nov 2006, 12:37
Was mir bei dem Source noch aufgefallen ist (oder ich habs übersehen): Es fehlt FindCloseUrlCache
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:34 Uhr.
Powered by vBulletin® Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2019 by Daniel R. Wolf