AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Bilder zur Laufzeit generieren -> Fehler: EOutOfResources

Bilder zur Laufzeit generieren -> Fehler: EOutOfResources

Ein Thema von fuisch · begonnen am 6. Mär 2005 · letzter Beitrag vom 6. Mär 2005
Antwort Antwort
fuisch

Registriert seit: 26. Dez 2004
18 Beiträge
 
Delphi 6 Personal
 
#1

Bilder zur Laufzeit generieren -> Fehler: EOutOfResources

  Alt 6. Mär 2005, 12:35
In meinem Programm sollen zu jeder Bilddatei, deren Adressen in der Stringliste Dateien gespeichert sind Vorschaubilder erzeugt werden. Bei wenigen Bildern geht das so wie es untem im Quellcode steht auch gut, wenn es jetzt aber mehr Bilder werden, bleibt das Programm irgendwann mit der Fehlermeldung "Project Project1.exe raised exception class EOutOfResources with message 'Der Parameter stimmt nicht.'.". hängen. Wie muss ich das mit den Bildern machen damit es funktioniert?
Delphi-Quellcode:
for n:= 0 to Dateien.Count - 1 do begin
      listbox1.items.add(extractfilename(Dateien[n]));
      if (n MOD 8 = 0) AND (n<>0) then begin
        reihe:=reihe+1;
        bildnummer:=0;
      end;
      Image[n] := TImage.Create(Frame21);
      Image[n].Left := bildnummer*95+8;
      Image[n].Top := reihe*90+8;
      Image[n].Height := 72;
      Image[n].width := 87;
      Image[n].Parent := Frame21;
      Image[n].Stretch := true;
      Image[n].Proportional := true;
      Image[n].Picture.LoadFromFile(Dateien[n]);
      bildnummer:=bildnummer+1;
end;
  Mit Zitat antworten Zitat
Benutzerbild von sniper_w
sniper_w

Registriert seit: 12. Dez 2004
Ort: Wien, Österriech
893 Beiträge
 
Delphi 6 Enterprise
 
#2

Re: Bilder zur Laufzeit generieren -> Fehler: EOutOfResou

  Alt 6. Mär 2005, 12:45
Wie Gross ist eingentlich "Dateien.Count" ? Und wenn es um "Vorschaubilder" geht, warum nicht gleich auf Vorschaugrösse schrinken?(z.B. 20x20, oder 40x40..)
Katura Haris
Es (ein gutes Wort) ist wie ein guter Baum, dessen Wurzel fest ist und dessen Zweige in den Himmel reichen.
  Mit Zitat antworten Zitat
Benutzerbild von Rastaman
Rastaman

Registriert seit: 6. Jan 2005
Ort: Lübbecke
575 Beiträge
 
Turbo C++
 
#3

Re: Bilder zur Laufzeit generieren -> Fehler: EOutOfResou

  Alt 6. Mär 2005, 12:46
Delphi-Quellcode:
  private
    image: Array of TImage;
Hasst du das drin?
Und dann noch

  SetLength(image, Dateien.Count - 1) Image ist ein Array und SetLength legt die Länge fest. Bau das mal ein.
Chuck Norris has counted to infinity ... twice!
  Mit Zitat antworten Zitat
fuisch

Registriert seit: 26. Dez 2004
18 Beiträge
 
Delphi 6 Personal
 
#4

Re: Bilder zur Laufzeit generieren -> Fehler: EOutOfResou

  Alt 6. Mär 2005, 13:02
20x20 bzw. 40x40 halt ich für einiges zu klein, auf den Bildern soll man schon noch was erkennen.
Mit dem Array hab ich es bisher so gelöst, werde es jetzt umändern, so wie du es geschrieben hast:
Image : array [0..10000] of TImage; Der Wert von Dateien.Count ist variabel, je nachdem welcher Ordner ausgewählt ist, enthält Dateien verschiedene Werte.
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

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

Re: Bilder zur Laufzeit generieren -> Fehler: EOutOfResou

  Alt 6. Mär 2005, 13:42
ich hab den source nicht angeschaut aber ich hatte das problem mal als ich die höhe/breite kleiner 0 hatte.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Bilder zur Laufzeit generieren -> Fehler: EOutOfResou

  Alt 6. Mär 2005, 13:57
Welches Betriebssystem? Unter Windows 9x können schon mal recht schnell die Ressourcen knapp werden.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
fuisch

Registriert seit: 26. Dez 2004
18 Beiträge
 
Delphi 6 Personal
 
#7

Re: Bilder zur Laufzeit generieren -> Fehler: EOutOfResou

  Alt 6. Mär 2005, 14:12
Windows 98 SE.
Nochmal das Problem:
Der Benutzer wählt einen Ordner aus. Dann soll für jedes Bild in dem Ordner ein Vorschaubild generiert werden. Wenn es jetzt zu viele Bilder sind und die Bilder auch noch relativ groß sind, bekomme ich, nachdem einige Vorschaubilder erzeugt wurden die Fehlermeldung.
Die Höhe/Breite der Bilder ist auf jeden Fall größer als 0.
Angehängte Dateien
Dateityp: zip bilderprogramm_213.zip (2,5 KB, 7x aufgerufen)
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#8

Re: Bilder zur Laufzeit generieren -> Fehler: EOutOfResou

  Alt 6. Mär 2005, 17:20
Moin!

WIndows 98 SE hat einen beschränkten GDI Handle Pool von 128 KB - daher kann das OS maximal (128 * 1024 / 4) 32768 Handles für GDI Objekte vergeben. (oder waren die 128 KB erst ab ME?). Zumindest braucht eine TImage Instanz vom System schon allein derer 6 (mem dc, bitmap handle, bitmap canvas dc, bitmap canvas pen, bitmap canvas font, bitmap canvas brush) wodurch du sehr schnell in bredouille kommst. (der GDI Handle Pool ist global, also alle Applikation GDI + System GDI Handles)..

Empfehlung:
Nimm eine TImageList und setze dort die Höhe/Weite der gewünschten Vorschaubilder. Darin dann die !verkleinerten! Bilder ablegen und in der Dateianzeige keine TImage mehr instanziieren - selber malen. Einfach das Bild aus der TImageList holen und direkt dahin malen.

Ich habe mal eine klasse geschrieben die dieses Manko nach dem selben Prinzip wie eine TImageList (intern ein Bild) behebt und damit konnte ich eine Anwendung schreiben die dann mehrere Tausend Bitmaps laden und handeln konnte (bis 23.000 Bitmaps ausprobiert), da die Anwendung dies immer machen musste. Diese Klasse werde ich hier aber nicht veröffentlichen, daher nutze die TImageList oder bau dir nach dem selben Prinzip eine solche Klasse...

MfG
Muetze1
  Mit Zitat antworten Zitat
Benutzerbild von sniper_w
sniper_w

Registriert seit: 12. Dez 2004
Ort: Wien, Österriech
893 Beiträge
 
Delphi 6 Enterprise
 
#9

Re: Bilder zur Laufzeit generieren -> Fehler: EOutOfResou

  Alt 6. Mär 2005, 18:04
Zitat:
bitmap canvas pen, bitmap canvas font, bitmap canvas brush)
Ich glaube, Canvas hat einen ResourceMenager, so das nur VERSCHIEDENE Objekte einen neuen Platz im RAM(und somit auch HANDLE) bekommen. Oder ? Ich bin mir ziemlich sicher.
Katura Haris
Es (ein gutes Wort) ist wie ein guter Baum, dessen Wurzel fest ist und dessen Zweige in den Himmel reichen.
  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 11:01 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