Seite 1 von 2

Fehler bei IncludeBinary

Verfasst: 07.05.2007 17:46
von kreeph
Hallo Leute, ich habe ein Problem mit einem Programm, in das ich zwei Bilder speichen will.
Ich habe es mit Hilfe von IncludeBinary und dem Forum gelöst (Naja eigentlich nicht) aber das Programm beendet immer gleich mit einem Fehler.

Code: Alles auswählen

DataSection 
 Bild1:
  IncludeBinary "...Speicheradresse..."
 Bild2:
  IncludeBinary "...Speicheradresse..."
EndDataSection 

OpenWindow(0,0,0,400,400,#pb_window_systemmenu|#pb_window_minimizegadget,"")
CreateGadgetList(WindowID())
CatchImage(1,?Bild1)
UseImage(1)
Bild1=ImageID()
ImageGadget(0,5,5,0,0,Bild1,#pb_image_border)
CatchImage(2,?Bild2)
UseImage(2)
Bild2=ImageID()
ImageGadget(0,5,70,0,0,Bild2,#pb_image_border)

While WaitWindowEvent() <> #PB_Event_CloseWindow : Wend 
Was muss ich tun um das Progblem zu beheben, oder ist mein PC einfach zu langsam?
Habe natürlich vorbildlich wie jeder PB-Anfänger erstmal das Forum durchsucht :mrgreen: , aber nichts für 3.30 gefunden. Ich hoffe ihr önnt mir helfen und den Fehler beheben! Danka schonmal!

Verfasst: 07.05.2007 18:01
von Jilocasin
Eine gute Frage..
Eigentlich sollte der Programmablauf die Datasection ignorieren.
Tut er das nicht (vielleicht macht das 3.3 nicht, kA) führt das natürlich zum Absturz, da die "Bilddaten" nunmal für den Prozessor keinen Sinn ergeben :mrgreen:

Probier mal die Datasection + Bilder ans Ende zu setzen und nach deinem Wend ein "End" :D

Verfasst: 07.05.2007 18:10
von kreeph
Also danke erstmal :D , aber es geht nicht.

Verfasst: 07.05.2007 18:13
von a14xerus
ich weiß nicht, ob es dir in irgendeiner weise hilft, aber ich hatte in einem Projekt von mir mehrere Bilder über catch drin.
Lief alles gut.
Als ich dann noch ein weiteres hinzugefügt hatte, stürzte das Programm immer ab, habe ich das Bild dann in der Reihenfolge vor ein anderes gemacht, stürzte das Programm nicht mehr ab ... :?
Danach habe ich das besagte bild einfach nochmal neu mit dem Bildbearbeitungsprogramm abgespeichert.
Dann ging es, anscheinend war ein Fehler im Bild...
Ich hab's aber trotzdem bis heute nicht ganz verstanden

Re: Fehler bei IncludeBinary

Verfasst: 07.05.2007 19:14
von AND51
Probier mal das, habe selber 4.02, denke aber, so müsste es gehen. Ach ja, was benutzt du denn als "...Speicheradresse...", doch hoffentlich die Pfadangabe, oder?

Code: Alles auswählen

DataSection 
 Bild1: IncludeBinary "C:\Bild.bmp"
 Bild2: IncludeBinary "D:\Foto.jpg"
EndDataSection 

OpenWindow(0,0,0,400,400,#pb_window_systemmenu|#pb_window_minimizegadget,"")
CreateGadgetList(WindowID())
handle1=CatchImage(1,?Bild1)
ImageGadget(0,5,5,0,0,handle1,#pb_image_border)
handle2=CatchImage(2,?Bild2)
ImageGadget(0,5,70,0,0,handle2,#pb_image_border)

While WaitWindowEvent() <> #PB_Event_CloseWindow : Wend 
Noch watt: Wehe, der Fehler liegt an dir, weil du JPGs laden möchtest und vergessen hast, UseJPEGImageDecoder() zu verwenden... :wink:

Wo wir grad dabei sind

Verfasst: 07.05.2007 19:54
von Xaby
ich hab ein ähnliches Problem mit

CatchSprite

gehabt. Meine Sprites waren einfach leer.

Programm ging aber. Ich weiß nicht, was ich falsch gemacht habe.
Zurzeit habe ich dann CatchImage() benutzt und die Images auf meine Sprites drauf gezeichnet. Umständlich. Aber was soll ich machen.

- Noch eine Frage, wo wir gerade bei ImageGadget sind.
Wozu war da noch mal die Angabe der Höhe und Breite?

ImageGadget(#Gadget, x, y, Breite, Hoehe, ImageID [, Flags])

Wieso stellt sich das Gadget immer auf Höhe und Breite des Bildes ein?
Ich meine, wozu kann man Höhe und breite eingeben, wenn das Gadget macht, was es will? Falls das Image mal nicht geladen werden kann?
Dann muss man ja ein leeres Images erstellen.

Das wird mir auf Ewig ein Rätsel bleiben.


Und wo wir gerade bei Ideen sind:

Kennt ihr das:

Ihr macht einen Gadget(#...

Raute und dann müsstet ihr erst wieder in den EnumirationsTeil, um dort die Constante hinzuzufügen ...

Wenn das in einer neuen jaPBe-Version automatisch mit nicht deklarierten Constanten gehen würde, das wäre cool.
(ich weiß gehört nicht hier her, aber ist mir gerade wieder eingefallen) :allright:

Verfasst: 07.05.2007 20:03
von AND51
Volker, woher weißtn das? Ja zum Teufel, das Problem hab ich auch... :lol:
Deshalb mach ich meistens ab sofort ein extra IncludeFile, wo nur Enumeration drinsteht, dann brauche ch statt zu scrollen nur den Tab zu wechseln :wink:
Die Idee wär aber zu 50% doof, weil man sich dann fürs gadget #button reserviert, in der EventSchleife aber #knopf abfragt... Es sei denn, man ist ein "ordentlicher" Programmierer.

@ Thread: Bitte ,al auf meinen Post antworten, wenn das nicht klappt, solltest du mal mit If überprüfen, ob die Binaries überhaupt erfolgreich "gecatcht" werden.

Verfasst: 07.05.2007 21:47
von mk-soft
Wie wärs: Mach mir ein Tool was Enumeration zeugt.

Verfasst: 07.05.2007 23:13
von AND51
Gute Idee, aber wenn, dann richtig: Denn es ist besser, für Fenster und Gadgets und Bilder und Sprites, etc. getrennte Enumerations zu haben.
Außer bei Miniprojekten, wo man max. ca. 50 Konstanten hat, würde ich so ein Tool überall verwenden.

Vielleicht setz ich mich mal dran, wenn ja, kann ich aber noch nicht sofort versprechen kann.
Außerdem, egal, wer es macht, es wäre nett, mal eine Liste zusammenzustellen für was man alles eine eigene Enumeration braucht. Nicht, dass derjenige sonst was vergisst oder so. Aber vielleicht wäre es ganz gut, zu dem Thema einen eigenen Thread zu eröffnen, hier wird's doch sonst arg Offtopic.

Verfasst: 07.05.2007 23:27
von ts-soft
Datasection gibts doch garnicht in PB3.3 :freak:

Code: Alles auswählen

OpenWindow(0,0,0,400,400,#PB_Window_SystemMenu|#PB_Window_MinimizeGadget,"")
CreateGadgetList(WindowID())
CatchImage(1,?Bild1)
UseImage(1)
Bild1=ImageID()
ImageGadget(0,5,5,0,0,Bild1,#PB_Image_Border)
CatchImage(2,?Bild2)
UseImage(2)
Bild2=ImageID()
ImageGadget(0,5,70,0,0,Bild2,#PB_Image_Border)

While WaitWindowEvent() <> #PB_Event_CloseWindow : Wend

End

Bild1:
IncludeBinary "...Speicheradresse..."
Bild2:
IncludeBinary "...Speicheradresse..."