AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Algorithmen, Datenstrukturen und Klassendesign Delphi Out of system resources beim hinzufügen von Icon Zu ImageList
Thema durchsuchen
Ansicht
Themen-Optionen

Out of system resources beim hinzufügen von Icon Zu ImageList

Ein Thema von Shark99 · begonnen am 2. Mär 2013 · letzter Beitrag vom 2. Mär 2013
Antwort Antwort
Shark99

Registriert seit: 16. Mai 2007
403 Beiträge
 
#1

Out of system resources beim hinzufügen von Icon Zu ImageList

  Alt 2. Mär 2013, 02:55
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;
Angehängte Dateien
Dateityp: zip IconTest.zip (201,8 KB, 5x aufgerufen)
  Mit Zitat antworten Zitat
Shark99

Registriert seit: 16. Mai 2007
403 Beiträge
 
#2

AW: Out of system resources beim hinzufügen von Icon Zu ImageList

  Alt 2. Mär 2013, 04:25
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.
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#3

AW: Out of system resources beim hinzufügen von Icon Zu ImageList

  Alt 2. Mär 2013, 05:58
Zacherl hatte das Zerlegen von Icongroups einen Artikel http://www.delphipraxis.net/170682-l...resourcen.html mit behandelt.

EDIT: Crosspost http://stackoverflow.com/questions/1...rces-exception
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)

Geändert von Bummi ( 2. Mär 2013 um 06:01 Uhr)
  Mit Zitat antworten Zitat
Shark99

Registriert seit: 16. Mai 2007
403 Beiträge
 
#4

AW: Out of system resources beim hinzufügen von Icon Zu ImageList

  Alt 2. Mär 2013, 11:34
Danke, aber leider löst es mein Problem nicht, da es dort "nur" LoadFromFile und LoadFromResource, aber kein LoadFromStream gibt. :/
  Mit Zitat antworten Zitat
Aviator

Registriert seit: 3. Jun 2010
1.611 Beiträge
 
Delphi 10.3 Rio
 
#5

AW: Out of system resources beim hinzufügen von Icon Zu ImageList

  Alt 2. Mär 2013, 12:51
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
  Mit Zitat antworten Zitat
Shark99

Registriert seit: 16. Mai 2007
403 Beiträge
 
#6

AW: Out of system resources beim hinzufügen von Icon Zu ImageList

  Alt 2. Mär 2013, 19:15
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.
  Mit Zitat antworten Zitat
Shark99

Registriert seit: 16. Mai 2007
403 Beiträge
 
#7

AW: Out of system resources beim hinzufügen von Icon Zu ImageList

  Alt 2. Mär 2013, 19:16
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
Welches Delphi verwendest du? Der Test war mit Delphi 7. Vielleicht wurde die Fehlermeldung in späteren Delphi-Versionen ausgebessert. Aber wie ich schon schrieb, auch wenn man das SmallIcon nicht, wird es von ImageList nicht akzeptiert.
  Mit Zitat antworten Zitat
Aviator

Registriert seit: 3. Jun 2010
1.611 Beiträge
 
Delphi 10.3 Rio
 
#8

AW: Out of system resources beim hinzufügen von Icon Zu ImageList

  Alt 2. Mär 2013, 19:19
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?
  Mit Zitat antworten Zitat
Shark99

Registriert seit: 16. Mai 2007
403 Beiträge
 
#9

AW: Out of system resources beim hinzufügen von Icon Zu ImageList

  Alt 2. Mär 2013, 19:25
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.
  Mit Zitat antworten Zitat
Shark99

Registriert seit: 16. Mai 2007
403 Beiträge
 
#10

AW: Out of system resources beim hinzufügen von Icon Zu ImageList

  Alt 2. Mär 2013, 23:49
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

http://blogs.msdn.com/b/oldnewthing/.../10079192.aspx

Geändert von Shark99 ( 3. Mär 2013 um 01:33 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


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 23:54 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz