![]() |
Out of system resources beim hinzufügen von Icon Zu ImageList
Liste der Anhänge anzeigen (Anzahl: 1)
Ich kriege eine (in dem Fall) merkwürdige Out of System Resources Exception beim Laden eines bestimmten Icons (icon.ico). Mit anderen Icons funktioniert der Code. Andere Programme (Explorer, ThumbsPlus) können diese Icon aber korrekt anzeigen.
Habe ein Beispielprojekt inkl des Icons angehängt. Code:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var Icon: TIcon; begin try Icon := TIcon.Create; Icon.LoadFromFile('icon.ico'); ImageList1.AddIcon(Icon); Caption := IntToStr(ImageList1.Count); finally Icon.Free; end; end; |
AW: Out of system resources beim hinzufügen von Icon Zu ImageList
Es liegt anscheinend daran dass es ein Multi-Size Icon ist. Gibt es außer ExtractIconEx() eine andere Möglichkeit an das erste Icon zu gelangen? Ich meinem richtigen Code habe ich das TIcon in einem TMemoryStream (nutze TIcon.LoadFromStream), und würde nur ungern den Stream in einer Datei zwischenspeichern, weil es bei vielen Icons den ganzen Prozess sehr verlangsamen würde.
|
AW: Out of system resources beim hinzufügen von Icon Zu ImageList
Zacherl hatte das Zerlegen von Icongroups einen Artikel
![]() EDIT: Crosspost ![]() |
AW: Out of system resources beim hinzufügen von Icon Zu ImageList
Danke, aber leider löst es mein Problem nicht, da es dort "nur" LoadFromFile und LoadFromResource, aber kein LoadFromStream gibt. :/
|
AW: Out of system resources beim hinzufügen von Icon Zu ImageList
Bei mir kam diese Meldung, als ich der ImageList ein Bild zuweisen wollte und die Auflösung (bzw. die Größe) dieses Bildes größer war als die der ImageList.
Beispiel: Auflösung vom Bild: 20x20 Eingestellte Auflösung bei der ImageList Einstellung: 16x16 |
AW: Out of system resources beim hinzufügen von Icon Zu ImageList
Hab festgestellt dass sogar wenn man mit ExtractIconEx() das SmallIcon rausnimmt und es versucht der ImageList hinzuzufügen es immer noch nicht geht. Also es muss was anderes an dem Icon sein was ImageList nicht mag. Sogar wenn man das SmallIcon abspeichert (wird in Explorer korrekt angezeigt) und neu lädt, mag es ImageList nicht.
|
AW: Out of system resources beim hinzufügen von Icon Zu ImageList
Zitat:
|
AW: Out of system resources beim hinzufügen von Icon Zu ImageList
Ich verwende (wie links auch sichtbar) Delphi 2009 Architect.
Die Meldung war die Gleiche nur eben auf Deutsch. War auch nur eine Idee. Mein Fehler war dadurch behoben. Hast du irgendetwas bei der Image List eingestellt, so dass sie spezielle Eigenschaften besitzt und dadurch nicht mehr mit dem Icon klar kommt? |
AW: Out of system resources beim hinzufügen von Icon Zu ImageList
Nein, ist einfach nur eine leere ImageList. Und wie gesagt, andere .ico Dateien funktionieren! Ein Icon von 100+ getesteten geht nicht. Gleichzeitig haben weder Explorer, noch IrfanView, oder ThumbsPlus ein Problem damit.
|
AW: Out of system resources beim hinzufügen von Icon Zu ImageList
Das Problem liegt daran dass dieses Icon ein PNG-ICON ist. Kein .png Gfx-File, sondern eine PNG-Struktur innerhalb einer Windows Icon Struktur. Das ist anscheinend seit Vista erlaubt. Out of Resources kommt davon dass Delphi 7 sowas nicht erwartet und statt des BMP Headers die PNG-Daten liest und dann versucht paar Exabytes zu allozieren (weil Breite der Bitmap von einer falschen Stelle gelesen werden).
Die Lösung des Problems besteht darin den Header im Voraus zu überprüfen und es in ein TIcon nur dann wandeln, wenn ein BMP Header vorhanden ist. Habe diese Lösung von TLama bekommen. edit: hier mehr info zum thema ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:10 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