Aktuelle Zeit: 22.05.2013 14:08

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 16 Beiträge ]  Gehe zu Seite 1, 2  Nächste
Autor Nachricht
 Betreff des Beitrags: [PB 4.5] Fehler bei Indexierung / Aufzählung
BeitragVerfasst: 13.04.2011 04:53 
Ich meine einen Fehler gefunden zu haben, sich bin ich mir nicht!
Ihr erhaltet ein Archiv, darin ist eine exe und einige PNG Dateien sowie die Bispiel-.pb Datei.

Kommentar ist ebenfalls in der Quellcode-Datei -> .pb

Fehler:
Bei der Debugausgabe nachdem man auf eines der Navigationspunkte klickt, oberhalb des Fensters, gibt der Debugger sowohl bei der Methode "Indexierung" (Gadgets mit Zahlen) als auch bei der Methode "Aufzählung" (Gadgets mit Konstanten) immer die gleiche EventGadget() ID.

Lösung:
Noch keine gefunden

Erste Ansätze:
Konstanten welche zuvor so hießen "#GadgetStart", "#GadgetVideos", ... wurden in "1", "2", ... umbenannt, jedoch ohne Erfolg!

Archiv:
PB 4.5 Fehler


Gruß


Nach oben
  
 
 Betreff des Beitrags: Re: [PB 4.5] Fehler bei Indexierung / Aufzählung
BeitragVerfasst: 13.04.2011 10:23 
Offline
StudiMod oder sowas in der Art
Benutzeravatar

Registriert: 29.08.2004 20:20
Wohnort: Homburg (Saar)
Wieso steht
Code:
If Event = #PB_Event_Gadget

         If EventGadget()

            Debug EventGadget()

         EndIf 

      EndIf


vor
Code:
      Event = WaitWindowEvent()

? Das macht keinen Sinn. Außerdem brauchst du das 'If EventGadget()' nicht. Wenn die Gadget-ID nämlich 0 ist, dann gibt das 'Debug' nichts aus.

Wieso lagerst du die Initialisierung von globalen Variablen, von Enums und DataSections in einzelnen Procedures aus? Das macht vor allem bei Enum und DataSection keinen Sinn, weil diese schon initialisiert werden, ohne dass du die Procedure aufrufst.

Du hast einen merkwürdigen Stil deinen Code zu strukturieren.

_________________
Bild

NEU! Elektronik, Bastelei, Verrücktes, Interessantes, Schlaues, alles in Text, Bild und Ton? Klick hier! NEU!
Linux Mint 14 x64, PureBasic 5.11 x64 (außerdem 4.41, 4.50, 4.61, 5.00, 5.10)

Die deutsche Rechtschreibung ist Freeware, du darfst sie kostenlos nutzen – Aber sie ist nicht Open Source, d. h. du darfst sie nicht verändern oder in veränderter Form veröffentlichen.


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: [PB 4.5] Fehler bei Indexierung / Aufzählung
BeitragVerfasst: 13.04.2011 11:36 
Weil ich irgendwann mal so angefangen bin mir alles schön zu unterteilen.
Um meine Technik mal zu optimieren, müsste ich was tun, die Enumeration zusammen mit DataSection in eine Proc?
Also erst Enumeration und dann DataSection in eine Procedure schreiben?

Du meinst ich kann statt eine globals() -procedure einfach sobald ich ein Wort Global haben möchte, gleich Global schreiben ohne diese vorher in eine seperate Proc zu schreiben?


Zurück zum Fehler, ist das jemanden aufgefallen oder liegt das wirklich an meine Art wie ich den Code aufbaue?
Denn in PB 4.3 hat das so alles wunderbar geklappt mit den Enumerations.


Gruß


Nach oben
  
 
 Betreff des Beitrags: Re: [PB 4.5] Fehler bei Indexierung / Aufzählung
BeitragVerfasst: 13.04.2011 12:17 
Offline

Registriert: 19.09.2007 22:18
@Code-Strukturierung
Du kannst bzw. solltest auch die Faltungen (Einleiten mit ";{" am Anfang der Zeile, Beenden mit ";}") und Includes verwenden. Macros würden sich z.T. auch als Ersatz für Prozeduren anbieten.

Zitat:
Weil ich irgendwann mal so angefangen bin mir alles schön zu unterteilen.
Um meine Technik mal zu optimieren, müsste ich was tun, die Enumeration zusammen mit DataSection in eine Proc?
An deinem Satzbau solltest du auch nochmal feilen. <)

_________________
"Ich habe aus Spontanität den Thread arbeiten lassen - er bietet kein deutliches Fundament." — Alexi (aka. cOoki3druqs)
"ich hogffe ihr könnt den fehle endecken" — Marvin133
"Ideoten gibts ..." — computerfreak


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: [PB 4.5] Fehler bei Indexierung / Aufzählung
BeitragVerfasst: 13.04.2011 15:06 
c4s hat geschrieben:
@Code-Strukturierung
Du kannst bzw. solltest auch die Faltungen (Einleiten mit ";{" am Anfang der Zeile, Beenden mit ";}") und Includes verwenden. Macros würden sich z.T. auch als Ersatz für Prozeduren anbieten.

Zitat:
Weil ich irgendwann mal so angefangen bin mir alles schön zu unterteilen.
Um meine Technik mal zu optimieren, müsste ich was tun, die Enumeration zusammen mit DataSection in eine Proc?
An deinem Satzbau solltest du auch nochmal feilen. <)


Akzeptieren Du solltest die Bildung von Satz deiner Mitmenschen! :D

So, nun habe ich das mal selbst KOMPLETT OHNE Prozeduren getestet.
Funktioniert!

Wird irgendwie an meinen vielen Prozeduren liegen, wodran genau weiß ich allerdings nicht!
Merkwürdig ist auch das wenn ich mir mit "Debug #Constant" alle Konstanten anzeigen lasse, das die Enumeration richtig funktioniert.
Nur eben nicht wenn ich dann auf ein ImageGadget klicke, dann erhalte ich jedes verdammte mal diese völlig unterpriviligierte 21. xD


Gruß

//EDIT:

Ich habe so das Gefühl das PB 4.5 wirklich mehr Fehler hat als sein Vorgänger!

Funktionsfähiges Beispiel:

Code:
;- Aufzählung der Konstanten
Enumeration
   #Window
   #Gadget1
   #Gadget2
EndEnumeration

;- Globale Variablen setzen
Global Event
Global Quit

;- Öffnen des Hauptfensters
OpenWindow(#Window, 25, 25, 800, 600, "Konstanten Test", #PB_Window_ScreenCentered | #PB_Window_SystemMenu)

ButtonGadget(#Gadget1, 5, 5, 100, 20, "Gadget 1")
StringGadget(#Gadget2, 5, 35, 100, 20, "Gadget 2")

Repeat
   
   Event = WaitWindowEvent()
   
   If Event = #PB_Event_Gadget
      Debug EventGadget()
   EndIf
   
Until Event = #PB_Event_CloseWindow


Wieso zeigt er beim anklicken von String Gadget zweimal den Wert der Konstante "'Gadget2" im Debugger an? Oo


Nach oben
  
 
 Betreff des Beitrags: Re: [PB 4.5] Fehler bei Indexierung / Aufzählung
BeitragVerfasst: 13.04.2011 15:41 
Offline
Benutzeravatar

Registriert: 29.08.2004 08:48
4.5.x hat einfach nur mehr Informationen:
Füge das mal ein
Code:
Repeat
   
   Event = WaitWindowEvent()
   
   If Event = #PB_Event_Gadget
          NR=EventGadget() 
          Select EventType()
                 Case #PB_EventType_LeftClick        : Debug Str(NR) + ":Klick mit der linken Maustaste"
                 Case #PB_EventType_RightClick       : Debug Str(NR) + ":Klick mit der rechten Maustaste"
                 Case #PB_EventType_LeftDoubleClick  : Debug Str(NR) + ":Doppelklick mit der linken Maustaste"
                 Case #PB_EventType_RightDoubleClick : Debug Str(NR) + ":Doppelklick mit der rechten Maustaste"
                 Case  #PB_EventType_Focus           : Debug Str(NR) + ":Fokus erhalten"
                 Case #PB_EventType_LostFocus        : Debug Str(NR) + ":Fokus verloren"
                 Case #PB_EventType_Change           : Debug Str(NR) + ":Inhalt hat sich geändert"
                 Case #PB_EventType_DragStart        : Debug Str(NR) + ":Der Anwender versucht, eine Drag & Drop Operation zu starten"
 
                   
                 Default
                   Debug Str(NR) + ":unknown event"
               EndSelect


   EndIf
   
Until Event = #PB_Event_CloseWindow

_________________
www.faz.net hat geschrieben:
Für eine repräsentative Auswertung, teilt die Forschungsgruppe Wahlen mit, sei die Zahl der verbliebenen FDP-Anhänger inzwischen zu gering.


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: [PB 4.5] Fehler bei Indexierung / Aufzählung
BeitragVerfasst: 13.04.2011 15:54 
Sry da muss ich widersprechen!
PB 4.5 hat zu deinem Beispiel nicht mehr Informationen, denn EventType war schon in der PB 4.3 vorhanden. ;)

Davon abgesehen habe ich immernoch für jedes Gadget eine Debug-Ausgabe von 21.


Nach oben
  
 
 Betreff des Beitrags: Re: [PB 4.5] Fehler bei Indexierung / Aufzählung
BeitragVerfasst: 13.04.2011 16:11 
Erstmal sorry für den DP, nur war mir zu blöd jedesmal mein Post zu editieren.

Fehler könnt ihr nun selbst testen mit einem Funktionsfähigen Beispiel:

Code:
;{- Initiieren von Umgebungen und Plugins
InitSprite()
;}

;{- Aufzählung der Konstanten
Enumeration
   #Window
   #GadgetHead
   #GadgetNaviStart
   #GFXHead
   #GFXNavi
EndEnumeration
;}

;{- Bilder vorbereiten
CreateImage(#GFXHead,800,50)
StartDrawing(ImageOutput(#GFXHead))
   DrawingMode(#PB_2DDrawing_Default)
   Box(0,0,800,600,RGB(200,200,200))
StopDrawing()

CreateImage(#GFXNavi,50,50)
StartDrawing(ImageOutput(#GFXNavi))
   DrawingMode(#PB_2DDrawing_Default)
   Box(0,0,50,50,RGB(200,200,150))
StopDrawing()
;}

;{- Öffnen und Ausführen des Hauptfensters
OpenWindow(#Window, 25, 25, 800, 600, "Konstanten Test", #PB_Window_ScreenCentered | #PB_Window_SystemMenu)

ImageGadget(#GadgetHead, 0, 0, 800, 600, ImageID(#GFXHead))
ImageGadget(#GadgetNaviStart, 0, 50, 50, 50, ImageID(#GFXNavi))

Repeat
   
   Event = WaitWindowEvent()
   
   If Event = #PB_Event_Gadget
      Debug EventGadget()
   EndIf
   
Until Event = #PB_Event_CloseWindow
;}


Analyse:
Wenn ihr nun das zweite ImageGadget auf die Y Koordinate 0 setzt, was ich ja in meiner Anwendung vorhabe, dann bekomme ich jedesmal die gleiche EventGadget()-ID.

Begründung:
PureBasic ist es nicht möglich, soweit ich das sehe, mit ImageGadgets die übereinander positioniert sind, umzugehen!
In CascadingStyleSheets (Zum Beispiel bei einem Einsatz für Homepage-Navigationen) ist es möglich durch Index die Grafiken unabhängig reagieren zu lassen da diese sich "nicht wirklich" den selben Platz teilen durch die Index(-Trennung).

Lösung:
Mehrere ImageGadgets nicht an der selben Position erstellen.

Ist das eine Lösung?:
Nein!
Denn dann müsste ich für jeden Navigations-Punkt (jedes Icon) einen Schnitt in den Hintergrund machen und so tun als ob es ein Hintergrundbild gibt, welches in wirklichkeit mit in dem Navi-Icon gemalt ist.


Ist das nun ein Fehler in PureBasic 4.5?:
Das würde ich gern von EUCH wissen? :)


Gruß

Renovatio


Nach oben
  
 
 Betreff des Beitrags: Re: [PB 4.5] Fehler bei Indexierung / Aufzählung
BeitragVerfasst: 13.04.2011 16:29 
Offline
StudiMod oder sowas in der Art
Benutzeravatar

Registriert: 29.08.2004 20:20
Wohnort: Homburg (Saar)
Das liegt nicht an PureBasic. Das liegt am Betriebssystem. Unter Ubuntu läuft das zum Beispiel alles genau so wie du es gerne hättest.

Fakt ist jedenfalls, dass das Übereinander-lagern von ImageGadgets noch nie eine gute Idee war und viele damit ihre Probleme hatten. Wieso nutzt du nicht ein großes 'ImageGadget', 'DrawImage' und eine einfach Funktion, die dir sagt, in welchen Bereich geklickt wurde?

Mittlerweile müsste man auch bestimmt das neue CanvasGadget dafür verwenden können. Ist aber nur eine Vermutung, weil ich damit noch nichts gemacht habe.

_________________
Bild

NEU! Elektronik, Bastelei, Verrücktes, Interessantes, Schlaues, alles in Text, Bild und Ton? Klick hier! NEU!
Linux Mint 14 x64, PureBasic 5.11 x64 (außerdem 4.41, 4.50, 4.61, 5.00, 5.10)

Die deutsche Rechtschreibung ist Freeware, du darfst sie kostenlos nutzen – Aber sie ist nicht Open Source, d. h. du darfst sie nicht verändern oder in veränderter Form veröffentlichen.


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: [PB 4.5] Fehler bei Indexierung / Aufzählung
BeitragVerfasst: 13.04.2011 16:33 
NicTheQuick hat geschrieben:
Wieso nutzt du nicht ein großes 'ImageGadget', 'DrawImage' und eine einfach Funktion, die dir sagt, in welchen Bereich geklickt wurde?

Würde für den Anfang teilweise funktionieren, so wüsste ich in welchen Bereich geklickt wurde, jedoch nicht welche GadgetID ausgelöst wurde.

NicTheQuick hat geschrieben:
Mittlerweile müsste man auch bestimmt das neue CanvasGadget dafür verwenden können. Ist aber nur eine Vermutung, weil ich damit noch nichts gemacht habe.

Kenn ich nicht, dass CanvasGadget.


Nach oben
  
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 16 Beiträge ]  Gehe zu Seite 1, 2  Nächste

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye