Image angeblich nicht initialisiert?

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Delle
Beiträge: 1130
Registriert: 10.05.2005 22:48

Image angeblich nicht initialisiert?

Beitrag von Delle »

Hallo,

warum meckert er beim Klick auf den Button rum, dass das Image bild2 nicht initialisiert ist?

Code: Alles auswählen

UseJPEGImageDecoder()

bild1=LoadImage(#PB_Any,"1.jpg")
bild2=LoadImage(#PB_Any,"2.jpg")
   		    
OpenWindow(0,0,0,200,350,"",#PB_Window_SystemMenu)

ButtonGadget(1000,10,10,128,20,"Wechsel")

bla1=ButtonImageGadget(#PB_Any,10,50,128,128,ImageID(bild1))

Repeat
   
   Select WaitWindowEvent()
         
      Case #PB_Event_CloseWindow
         End
         
      Case #PB_Event_Gadget
         Select EventGadget()
            Case 1000
                              
          SetGadgetAttribute(GadgetID(bla1),#PB_Button_Image,ImageID(bild2))
            
         EndSelect
         
   EndSelect
   
ForEver
PB 6.21 | Win 11
Derren
Beiträge: 558
Registriert: 23.07.2011 02:08

Re: Image angeblich nicht initialisiert?

Beitrag von Derren »

Aha?
Ich bekomme eine ganz andere Fehlermeldung.
Nämlich, dass das Gadget nicht existiert.
GadgetID() ist da überflüssig (und falsch) wenn du mit #PB_Any arbeitest.

Nach dem Laden der Bilder solltest du trotzdem überprüfen, ob alles geklappt hat. Wenn dein Programm mal fertig ist, sagt dir der Debugger nicht mehr, dass da ein Bild fehlt, sondern dein Programm schmiert einfach ab, ohne dass du weißt was los ist.
Signatur und so
Benutzeravatar
rolaf
Beiträge: 3843
Registriert: 10.03.2005 14:01

Re: Image angeblich nicht initialisiert?

Beitrag von rolaf »

Delle hat geschrieben:warum meckert er beim Klick auf den Button rum, dass das Image bild2 nicht initialisiert ist?
Z.B weil Bild "1.jpg" und Bild "2.jpg" nicht existieren oder nicht da sind wo sich die Exe befindet, da du keinen Dateipfad angegeben hast. Zudem hat Derren recht, was soll denn GadgetID() da?
:::: WIN 10 :: PB 5.73 :: (x64) ::::
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Image angeblich nicht initialisiert?

Beitrag von ts-soft »

Code: Alles auswählen

EnableExplicit

UseJPEGImageDecoder()

Define bild1 = LoadImage(#PB_Any,  #PB_Compiler_Home + "Examples\Sources\Data\clouds.jpg")
Define bild2 = LoadImage(#PB_Any, #PB_Compiler_Home + "Examples\Sources\Data\PureBasic.bmp")

OpenWindow(0, 0, 0, 200, 350, "", #PB_Window_SystemMenu)

ButtonGadget(0, 10, 10, 128, 20, "Wechsel")

Define bla1 = ButtonImageGadget(#PB_Any, 10, 50, 128, 128,ImageID(bild1))

Repeat
  
  Select WaitWindowEvent()
      
    Case #PB_Event_CloseWindow
      End
      
    Case #PB_Event_Gadget
      Select EventGadget()
        Case 0
          
          SetGadgetAttribute(bla1, #PB_Button_Image, ImageID(bild2))
          
      EndSelect
      
  EndSelect
  
ForEver
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
rolaf
Beiträge: 3843
Registriert: 10.03.2005 14:01

Re: Image angeblich nicht initialisiert?

Beitrag von rolaf »

Code: Alles auswählen

Define bild1 = LoadImage(#PB_Any,  #PB_Compiler_Home + "Examples\Sources\Data\clouds.jpg")
Gibbet bei mir nich... :wink:
:::: WIN 10 :: PB 5.73 :: (x64) ::::
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Image angeblich nicht initialisiert?

Beitrag von ts-soft »

rolaf hat geschrieben:Gibbet bei mir nich... :wink:
Gibbet bei mir, dann gab es das aber mal bei Dir :mrgreen:
Ich installiere immer in den selben Ordner. (lösche nur das, wo zu löschen erforderlich ist)

Nimm den:

Code: Alles auswählen

Define bild1 = LoadImage(#PB_Any,  #PB_Compiler_Home + "Examples\3D\Data\Textures\clouds.jpg") 
Zuletzt geändert von ts-soft am 28.01.2012 12:35, insgesamt 1-mal geändert.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
rolaf
Beiträge: 3843
Registriert: 10.03.2005 14:01

Re: Image angeblich nicht initialisiert?

Beitrag von rolaf »

ts-soft hat geschrieben:Gibbet bei mir, dann gab es das aber mal bei Dir :mrgreen:
Ich installiere immer in den selben Ordner. (lösche nur das, wo zu löschen erforderlich ist)
Ich installiere immer in einen frischen Ordner, weil Leichen brauch ich nur im Keller nicht in meiner bevorzugten Programiersprache. :lol:
:::: WIN 10 :: PB 5.73 :: (x64) ::::
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Image angeblich nicht initialisiert?

Beitrag von ts-soft »

Leichen im Examples-Ordner, der mangels Rechten an dem Ort gar nicht richtig funktioniert, sind mir so ziemlich wurscht.
Aber ich hab ja noch andere Dateien/Versionen in anderen Unterordnern, die ich weiterhin benötige. Deshalb lösche ich
dort nicht einfach alles.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Delle
Beiträge: 1130
Registriert: 10.05.2005 22:48

Re: Image angeblich nicht initialisiert?

Beitrag von Delle »

Oh man... Bild 2.jpg war falsch benannt und in Wirklichkeit ein PNG :) Kein Wunder...

Was ich aber nicht ganz verstehe: Wieso brauch ich für das Bild eine ImageID() und für das Gadget selber nicht?

Sowohl Bild als auch Gadget sind ja mittels #PB_Any erstellt worden...
PB 6.21 | Win 11
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Image angeblich nicht initialisiert?

Beitrag von ts-soft »

Delle hat geschrieben:Was ich aber nicht ganz verstehe: Wieso brauch ich für das Bild eine ImageID() und für das Gadget selber nicht?
Da muß man in der Hilfe immer genau drauf achten!

Im Falle von Bildern kann man auch das handle von per API geladenen Bildern übergeben, das wäre mit der normalen ID nicht möglich.
So ähnlich verhält es sich auch bei anderen Funktionen.

// edit
oder einfacher gesagt, mit ImageID(#Image) erhälst du das Handle zum Bild. Die Funktion nutzt das Handle, damit man auch per
API geladene Bilder nutzen kann, mit dieser Funktion.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Antworten