Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi ImageList - voll (https://www.delphipraxis.net/136036-imagelist-voll.html)

hirnstroem 22. Jun 2009 15:02


ImageList - voll
 
'loha Folks,

in eine ImageList sollen beliebig (so lange Arbeitsspeicher vorhanden) viele gleich grosse Bilder geladen werden. Nun lässt sich die ImageList aber bereits lange befor der Arbeitsspeicher voll ist, nicht mehr weiter befüllen.

Die Delphi Hilfe sagt folgendes:
In einer Bilderliste finden sehr viele Bilder gleicher Größe Platz, die jeweils über ihren Index (0 bis n - 1) abgerufen werden können.

Ich versuche zur Zeit die ImageList mit 176*144 Pixel grossen, monochromen Bitmaps zu befüllen und nach ziemlich genau 500 Bildern ist Schluss (ImageList.Add(ABitmap, nil) hat einen Rückgabewert < 0).

Die "AllocBy" Eigenschaft hat auf besagtes keinen Einfluss. Wird, sobald kein Bild mehr "Platz hat" eine neue ImageList Instanz erzeugt, lässt sich diese wieder befüllen, mit der selben "Begrenzung".

Falls mir jemand erklären kann, weshalb dies so sein könnte, wäre mir sehr geholfen.

Grüsse
hirnstroem

Bernhard Geyer 22. Jun 2009 15:04

Re: ImageList - voll
 
Da werden dir wohl irgendwo GDI-Ressourcengrenzen einen Strich durch die Rechnung machen.

Probier mal die ImageList vom ElPack. Diese hat einige Macken der Windows-Imageliste nicht. Evtl gleich die PNG-Imageliste der LMD Tools nehmen.

Muetze1 22. Jun 2009 15:14

Re: ImageList - voll
 
Zitat:

Zitat von Bernhard Geyer
Da werden dir wohl irgendwo GDI-Ressourcengrenzen einen Strich durch die Rechnung machen.

Weisst du wie die ImageList intern die Bilder ablegt und verwaltet?

Bernhard Geyer 22. Jun 2009 15:20

Re: ImageList - voll
 
Zitat:

Zitat von Muetze1
Zitat:

Zitat von Bernhard Geyer
Da werden dir wohl irgendwo GDI-Ressourcengrenzen einen Strich durch die Rechnung machen.

Weisst du wie die ImageList intern die Bilder ablegt und verwaltet?

Stimmt. Könnte noch was anderes sein, da hier ja nicht so viele Ressourcen verwendet werden.

@hirnstroem: Passiert das gleiche wenn du die Bilder zur Laufzeit hinzu fügst? Welches OS hast du und welche Farbtiefe?

hirnstroem 23. Jun 2009 06:02

Re: ImageList - voll
 
Zitat:

Zitat von Bernhard Geyer
Passiert das gleiche wenn du die Bilder zur Laufzeit hinzu fügst? Welches OS hast du und welche Farbtiefe?

Die Bilder werden zur Laufzeit hinzugefügt. Ich verwende Windows XP (SP3) mit 32 Bit Farbtiefe. Bei 16 Bit passen anstatt 500 Bilder bereits knapp 2'000 Bilder in die ImageList, ab 10'000 wäre ich zufrieden : )

hirnstroem 23. Jun 2009 06:19

Re: ImageList - voll
 
Zitat:

Zitat von Bernhard Geyer
Probier mal die ImageList vom ElPack. Diese hat einige Macken der Windows-Imageliste nicht. Evtl gleich die PNG-Imageliste der LMD Tools nehmen.

Vielen Dank für den Tipp. Die ImageList wurde soeben durch eine JvImageList (Project JEDI) ausgetauscht, welche das geschilderte Problem nicht zu haben scheint.

Grüsse
hirnstroem


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:46 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