Problem ist das sobald Code B aufgerufen wird irgendwie Speicher für jedes Icon belegt wird.
Bei mehreren Icons kommen da schon mal 4 MB zusammen obwohl ich ja eigentlich nur den Index für die Imageliste ziehe und nicht das komplette icon. Muß ich noch irgendetwas freigeben? (destroyicon(FileInfo.hicon) bringt nichts da hicon = nil)
Oder wird mit dem Aufruf von Code B: das Icon in die image liste geladen(obwohl die imageliste ja nicht mit angegeben ist) so das Code C überhaupt funktioniert?
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Von wie vielen Icons redest du eigetlich bei deiner Anwendung? Und vor allem wie viele unterschiedliche?
Und der Speicher ist ja irgendwo logisch. Sobald er etwas anfasst was neu ist, dann muss er das ja in den Speicher laden. Und ich habe gerade mal in eine alte Anwendung von mir geschaut. Da kommt auch einiges an Speicher zusammen. Allerdings ist mir dabei auch aufgefallen, dass knapp 10.000 GDI Handles habe. Das könnte bei dir auch der Fall sein. Diese müssen auch wieder frei gegeben werden.
Was normalerweise freigegeben werden muß ist das TFileInfo.hicon,
das ist jedoch nil da ich ja eh nur den Index hohle.
Aber ich glaube das Problem hat sich erledigt,
Die himagelist die ich erzeuge gilt für den ganzen Prozess.
Ich denke das sämtliche Icons für die ich den Index hohlen will automatisch in die image liste geladen werden.
Das ganze soll ja nicht nur mit shell icons funktionieren...
Dann ist natürlich klar wo der Speicher hin geht, er lädt da wirklich die Icons rein - sonst müßte er sie ja beim Zeichnen jedesmall neu laden (geht ja auch um nicht shell icons)
[EDIT]
Hab gerade nochmal nach den GDI Handles geschaut,
benötigt so insgesammt ~100, also sicherlich 1 für jedes Icon.
Entsteht aber kein GDI Handle leak, wird alles wieder ordentlich freigegeben
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Ich hatte mir auch immer nur den Index geholt. Für so eine Art Explorer. Dann aber mehrere hundert Mal immer wieder ein und das Selbe Icon. Allerdings ist mein Code mit 100%tiger Wahrscheinlichkeit nicht fehlerfrei, da das nur ne Spielwiese war. Aber wenn du die Icons nur einmal lädst, dann hat es ja den Anschein als sei alles in Ordnung.
Mitglieder in diesem Forum: 0 Mitglieder und 9 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.