Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Absturz beim Laden eines Image aus Imagelist (https://www.delphipraxis.net/30679-absturz-beim-laden-eines-image-aus-imagelist.html)

Shadowsong 27. Sep 2004 22:38


Absturz beim Laden eines Image aus Imagelist
 
ZIEL: Ein Bitmap aus einer imagelist in ein Timage lade.

PROBLEM: programmabsturz!


also ich hab ja mal gesucht hier und es gibt immer die gleiche lösung zum laden eines image:

Code:
ImageList1.GetBitmap(0,Image1.Picture.Bitmap)
das ganze läuft über button1.click blabla
wenn ich jetzt den button anklicke, hängt sich die anwendung sofort auf und ich kann nichts mehr machen außer task-manager -> sofort beenden.


woran kann das liegen???
gibts keine bessere lösung images aus ner imagelist zu laden??



NEBENPROBLEM: GIF'S in Images. ich weiß nicht wie ich die comonents integriere!!
ich hab einige links zu downloads von den gif-componenten gefunden.. aber WAS muss ich dann mit den dingern amchen, um ein bestehendes projekt auf gifs zu trainieren ?????


DANKE IM VORAUS!!! :cyclops:

Nightshade 27. Sep 2004 22:44

Re: Absturz beim Laden eines Image aus Imagelist
 
Delphi-Quellcode:
  ImageList1.Draw(Image1.Canvas,0,0,0);
Versuchs mal so.

Allerdings vorher das Image auf die richtige Grösse bringen (Width/Height).

Mario 29. Sep 2004 08:58

Re: Absturz beim Laden eines Image aus Imagelist
 
Wenn sich Delphi aufhängt, greifst Du meist auf nicht existierende Speicherbereiche zu. Darum mal ein Schuss ins Blau: Bitmap ist nicht NIL?

Shadowsong 29. Sep 2004 13:14

Re: Absturz beim Laden eines Image aus Imagelist
 
was ist "NIL" ???

die bitmaps sind ganz normale *.bmp in der größe 7,47 KB und dem format 50x50 pixel



warum müssen in einer imagelist alle bilder die geliche größe habe??? ich kann auch verschiedene bilder mit verschiedenen größen in eine imagelist speichern .........

Mario 29. Sep 2004 13:42

Re: Absturz beim Laden eines Image aus Imagelist
 
Teste mal
Delphi-Quellcode:
if (Image1.Picture = NIL) or (Image1.Picture.Bitmap = NIL)
then ShowMessage('Bitmap noch nicht initalisiert!')
else ImageList1.GetBitmap(0,Image1.Picture.Bitmap);
Wenn sich es dann immer noch aufhängt, wars das nicht. Falls Du eine Meldung siehst, ist Deine Bitmap einfach noch nicht initialisiert.

Shadowsong 29. Sep 2004 13:53

Re: Absturz beim Laden eines Image aus Imagelist
 
hm habs mit dem code von mario probiert. es kommt keine meldung, es passiert gar nichts das programm stürzt SOFORT ab.

wie kann ich denn überhaupt nachgucken ob meine bilder initialisiert sind und wie kann ich sie initialisieren auf nummer sicher ???

Mario 29. Sep 2004 14:06

Re: Absturz beim Laden eines Image aus Imagelist
 
Mit dem Vergleich auf NIL testet Du, ob Sie auf einen Speicherbereich zeigen. Nun könnte es theoretisch sein, dass dieser Speicherbereich ungültig ist. Das könnte aber eigentlich nur passieren, wenn Du zuvor:
Delphi-Quellcode:
Image1.Picture.Bitmap.Free
aufgerufen hast, dass halte ich jetzt aber für unwahrscheinlich.

Ganz sicher, dass er an dieser Stelle hängen bleibt?

Dannyboy 29. Sep 2004 14:39

Re: Absturz beim Laden eines Image aus Imagelist
 
Zitat:

Zitat von Mario
Teste mal
Delphi-Quellcode:
if (Image1.Picture = NIL) or (Image1.Picture.Bitmap = NIL)
then ShowMessage('Bitmap noch nicht initalisiert!')
else ImageList1.GetBitmap(0,Image1.Picture.Bitmap);
Wenn sich es dann immer noch aufhängt, wars das nicht. Falls Du eine Meldung siehst, ist Deine Bitmap einfach noch nicht initialisiert.

Würde dies nicht eine Zugriffsverletzung geben, wenn <Image1.Picture> auf <nil> steht? :gruebel:
Du würdest in Deiner Abfrage nämlich versuchen, auf <Image1.Picture.Bitmap> zuzugreifen, obwohl
Image1.Picture NIL sein könnte, oder?

Vielleicht so:
Delphi-Quellcode:
if (Image1.Picture <> NIL) then
  if (Image1.Picture.Bitmap <> NIL) then
  // tue was mit dem Bitmap
Nach Bedarf noch die beiden Else-Zweige abarbeiten.

Mario 29. Sep 2004 14:50

Re: Absturz beim Laden eines Image aus Imagelist
 
Normalerweise wertet Delphi boolsche Ausdrücke unvollständig aus. Wenn erste Bedingung bereits erfüllt ist, gibt es keinen Grund für Delphi, die zweite Bedingung noch zu prüfen, da es am Ergebnis nichts mehr ändert.

Es ist also für den Standardfall korrekt.

Shadowsong 29. Sep 2004 21:26

Re: Absturz beim Laden eines Image aus Imagelist
 
hmmmmmmmm wie initialisiere ich denn meine bitmaps so dass sie GANZ SICHER nicht NIL sind??

@ dannyboy: hm aber der code fragt doch ab, ob das IMAGE initialisiert ist. aber das prog hängt sich in dem moment auf, wenn dem IMAGE das bild aus der IMAGELIST zugeordnet wird. ist also nicht eher das problem, ob das bild aus der IMAGELIST initialisiert ist???? *ausprobier*

das problem ist echt komisch!! normal muss das doch geehen!!


please help me :cry:


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:24 Uhr.
Seite 1 von 2  1 2      

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