Seite 2 von 3

Verfasst: 20.08.2007 12:08
von Kaeru Gaman
> Aber in diesem Code sehe ich nicht den geringsten Sinn, tut mir leid...

dann ist es vielleicht etwas viel auf einmal.

hier nochmal die codezeilen, die den Kernpunkt beschreiben:

Code: Alles auswählen

#PB_Event_TimeOut = 0

Repeat
  EvID = WaitWindowEvent(10) ; als beispiel 10ms
  Select EvID
    Case #PB_Event_TimeOut
          SetGadgetState(#Gadget_ProgressBar, Counter)
  EndSelect
Until EXIT = 1
----------------------------------------------------

> ... vielleicht sollten wir den Thread in das Anfängerforum schieben. Da ist er
> meines Erachtens besser aufgehoben.

stattgegeben

Verfasst: 20.08.2007 13:34
von SimonSimCity
Bitte Clicken: http://simonsimcity.si.ohost.de/weitererfehler.jpg
Bild ist immer noch zu groß - Kaeru fecit

....


Sag mir, was hab ich jetzt wieder falsch gemacht???

Ich hab deine Anweisung genau befolgt!

Verfasst: 20.08.2007 13:37
von Kaeru Gaman
Kiffi hat geschrieben:
SimonSimCity hat geschrieben:Sagt das Bild nich schon alles?
das Bild sagt lediglich aus, dass Du anscheinend eine fehlerhafte
PB-Installation hast. Wenn Du ein Gadget erstellst und 2 Zeilen darunter eine
Fehlermeldung bekommst, dass es nicht initialisiert ist, dann ist was an
Deinem System faul.
dein aktuelles problem, dass dein gadget nicht erkannt wird,
hat nichts mit deinem event-handling-problem zu tun.

bei sowas ist aber ne ferndiagnose extrem schwierig.
es könnte wirklich an einer fehlerhaften installation liegen,
denn es sieht auf dem bild tatsächlich so aus,
als ob das gadget grad eben initialisiert wurde, und jetzt ist es nicht vorhanden.

Verfasst: 20.08.2007 13:40
von SimonSimCity
Kiffi hat geschrieben:
SimonSimCity hat geschrieben:Sagt das Bild nich schon alles?
das Bild sagt lediglich aus, dass Du anscheinend eine fehlerhafte
PB-Installation hast. Wenn Du ein Gadget erstellst und 2 Zeilen darunter eine
Fehlermeldung bekommst, dass es nicht initialisiert ist, dann ist was an
Deinem System faul.
Und was soll ich deines Erachtens nach tun?
PureBasic zum 5. Mal deinstallieren und neu aufspielen, oder mein System zum min.10. Mal neu aufsetzen?

Kaeru Gaman hat geschrieben: dein aktuelles problem, dass dein gadget nicht erkannt wird,
hat nichts mit deinem event-handling-problem zu tun.
d.h.??
Was muss ich tun, damit ich das Gadget bekommen kann??

Verfasst: 20.08.2007 13:47
von Kaeru Gaman
nuja... du hast aber auch kein eventhandling in der schleife...
kein WindowEvent oder WaitWindowEvent...
also, welches EvID willst du da eigentlich prüfen.

außerdem steckt das alles in einer Proc... steckt es am ende noch in einem thread?

ich hab keine ahnung, wo da der fehler liegt, aber ich hab beim programmieren schon mehr als einmal pferde vor die apotheke kotzen sehen.

kann sein, dass der fehler wo ganz andreas verursacht wird.

ich würde ja fast vorschlagen, dass du deinen kompletten code mal zum download bereitstellst,
damit man mal reinschaun kann.

aber anscheinend benutzt du ja auch ne beta von 4.1,
vermute ich jedenfalls mal anhand der XML-geschichten.
da könnte ich dir auch nicht weiterhelfen, weil ich noch 4.02 benutze.

Verfasst: 20.08.2007 13:53
von NicTheQuick
Wie wäre es mal damit, Rückgabewerte zu prüfen? Wurde das Fenster
korrekt erstellt? Wurde die GadgetList korrekt erstellt? Wurde das Gadget
korrekt erstellt? Und bei dem Select hast du einfach EvID hingeschrieben
anstatt WaitWindowEvent(1).

Hier mal meine Idee zur Verwirklichung:

Code: Alles auswählen

  ;...vorheriger Code...
  
  If OpenWindow(23, 244, 202, 290, 40, "Fortschritt", #PB_Window_BorderLess)
    If CreateGadgetList(WindowID(23))
      ProgressBarGadget(22, 0, 0, 290, 40, 0, 100)
      
      #PB_Event_TimeOut = 0
      If XMLChildCount(*Node)
        Repeat
          If WindowEvent() = 0
            i + 1
            __ReadContentFromXML_ForData(iXML, ChildXMLNode(*Node, i), bNewContent)
            SetGadgetState(22, Counter)
          EndIf 
        Until i = XMLChildCount(*Node)
      EndIf
      
      CloseWindow(23) ;Gadget wird automatisch 'gefreet' ;)
    Else
      MessageRequester("Fehler", "CreateGadgetList()")
    EndIf
  Else
    MessageRequester("Fehler", "OpenWindow()")
  EndIf
EndProcedure

Verfasst: 20.08.2007 13:54
von Xaby
Probiere doch erst einmal die Beispiele zu den Gadget aus.

Ein Fenster mit einem Gadget. Nix aufregendes.

Vielleicht tritt der Fehler ja auch nicht bei allen Gadgets auf :?

Schalte ruhig auch EnableExplicit

Code: Alles auswählen

If OpenWindow(0, 0, 0, 222, 200, "Gadgets", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) And CreateGadgetList(WindowID(0))
  ProgressbarGadget(0, 10, 10, 200, 20,0,100)
  SetGadgetState(0,30)
  Repeat
  
    
  Until WaitWindowEvent() = #PB_Event_CloseWindow
   
EndIf
Wenn da schon Fehler auftauchen, dann gute Nacht :shock: :allright:

Verfasst: 20.08.2007 13:56
von Kaeru Gaman
@NicTheQuick

aua.. danke.
den Rat hätt ich ihm gleich geben sollen.

...das war wieder so ne baum und wald geschichte... Bild

Verfasst: 20.08.2007 14:09
von SimonSimCity
Die Lösung hat man nicht auf den 1. Blick gesehen :)

Ich habe folgende 2 Proceduren zum Auslesen der XML-Datei bekommen und auch dort das Problem bereits behoben...
Kam halt daher, dass diese 2 Proceduren nicht selbst geschrieben habe, sonst hätte ich den Fehler schon viel früher gemerkt...

Code: Alles auswählen

Procedure __ReadContentFromXML_ForData(iXML.l, *Node, bNewContent.b = #False)
  Protected i.l
  
  If XMLStatus(iXML) <> #PB_XML_Success
    Debug "ERROR"
    Debug Str(XMLErrorLine(iXML))+":"+Str(XMLErrorPosition(iXML))
    Debug XMLError(iXML)
    CallDebugger
  EndIf
  
  If XMLNodeType(*Node) = #PB_XML_Normal And LCase(GetXMLNodeName(*Node)) = "phpkit_content"
    bNewContent = #True
    AddElement(Content())
  EndIf
  
  If bNewContent
    Select LCase(GetXMLNodeName(*Node))
      Case "content_id"             : Content()\id             = Val(GetXMLNodeText(*Node))
      Case "content_cat"            : Content()\cat            = Val(GetXMLNodeText(*Node))
      Case "content_time"           : Content()\time           = Val(GetXMLNodeText(*Node))
      Case "content_title"          : Content()\title          = GetXMLNodeText(*Node)
      Case "content_autor"          : Content()\autor          = GetXMLNodeText(*Node)
      Case "content_text"           : Content()\text           = GetXMLNodeText(*Node)
      Case "content_altdat"         : Content()\altdat         = GetXMLNodeText(*Node)
      Case "content_altdat2"        : Content()\altdat2        = GetXMLNodeText(*Node)
      Case "content_option"         : Content()\option         = Val(GetXMLNodeText(*Node))
      Case "content_status"         : Content()\status         = Val(GetXMLNodeText(*Node))
      Case "content_subid"          : Content()\subid          = Val(GetXMLNodeText(*Node))
      Case "content_expire"         : Content()\expire         = Val(GetXMLNodeText(*Node))
      Case "content_header"         : Content()\header         = GetXMLNodeText(*Node)
      Case "content_autorid"        : Content()\autorid        = Val(GetXMLNodeText(*Node))
      Case "content_themeid"        : Content()\themeid        = Val(GetXMLNodeText(*Node))
      Case "content_views"          : Content()\views          = Val(GetXMLNodeText(*Node))
      Case "content_rating"         : Content()\rating         = Val(GetXMLNodeText(*Node))
      Case "content_rating_total"   : Content()\rating_total   = Val(GetXMLNodeText(*Node))
      Case "content_comment_status" : Content()\comment_status = Val(GetXMLNodeText(*Node))
      Case "content_rating_status"  : Content()\rating_status  = Val(GetXMLNodeText(*Node))
      Case "content_ubb"            : Content()\ubb            = Val(GetXMLNodeText(*Node))
      Case "content_html"           : Content()\html           = Val(GetXMLNodeText(*Node))
      Case "content_smilies"        : Content()\smilies        = Val(GetXMLNodeText(*Node))
      Case "content_filesize"       : Content()\filesize       = Val(GetXMLNodeText(*Node))
      Case "content_template"       : Content()\template       = GetXMLNodeText(*Node)
      Case "content_teaser"         : Content()\teaser         = GetXMLNodeText(*Node)
      Case "content_related"        : Content()\related        = GetXMLNodeText(*Node)
      Case "phpkit_content"
      Default                                
        Debug "Falscher Eintrag!!! ("+GetXMLNodeName(*Node)+")"
    EndSelect
    SetGadgetItemState(#KalenderGadget, Content()\time, #PB_Calendar_Bold)
  EndIf
  
  

  If XMLChildCount(*Node)
    For i=1 To XMLChildCount(*Node)
      If Not bNewContent
        SetGadgetAttribute(22, #PB_ProgressBar_Maximum, XMLChildCount(*Node))
        SetGadgetState(22, i)
      EndIf
      __ReadContentFromXML_ForData(iXML.l, ChildXMLNode(*Node, i), bNewContent)
    Next i
  EndIf
  
EndProcedure
Procedure.b ReadContentFromXML(XMLFile.s)
  Protected iXML.l = LoadXML(#PB_Any, XMLFile)
  If Not IsXML(iXML)
    ProcedureReturn #False
  EndIf
  OpenWindow(23, 244, 202, 290, 40, "Fortschritt", #PB_Window_BorderLess)
   CreateGadgetList(WindowID(23))
    ProgressBarGadget(22, 0,0,290, 40, 0, 100)

  __ReadContentFromXML_ForData(iXML.l, RootXMLNode(iXML))

  FreeGadget(22)
  CloseWindow(23)
  FreeXML(iXML)
  ProcedureReturn #True
EndProcedure


Vorhin sah das Ende so aus:

Code: Alles auswählen

  
  OpenWindow(23, 244, 202, 290, 40, "Fortschritt", #PB_Window_BorderLess)
   CreateGadgetList(WindowID(23))
    ProgressBarGadget(22, 0,0,290, 40, 0, 100)

  If XMLChildCount(*Node)
    For i=1 To XMLChildCount(*Node)
      __ReadContentFromXML_ForData(iXML.l, ChildXMLNode(*Node, i), bNewContent)
      SetGadgetState(22, i)
    Next i
  EndIf
  
  FreeGadget(22)
  CloseWindow(23)
EndProcedure
Procedure.b ReadContentFromXML(XMLFile.s)
  Protected iXML.l = LoadXML(#PB_Any, XMLFile)
  If Not IsXML(iXML)
    ProcedureReturn #False
  EndIf
  __ReadContentFromXML_ForData(iXML.l, RootXMLNode(iXML))
  FreeXML(iXML)
  ProcedureReturn #True
EndProcedure
Der Fehler lag darin, dass das Window incl Gadget 2x geladen wurde...

Aber das müsste doch eigendlich einen anderen Fehler hervorrufen, oder????

Verfasst: 20.08.2007 14:15
von Kaeru Gaman
fremden fish-code benutzen, und den fehler im eigenen suchen... Bild


aber gut, dann kannst du dich ja jetzt um dein event-handlich problem kümmern...