Seite 1 von 3

Ungenaue Repeat Ausgabe

Verfasst: 10.02.2010 02:33
von Radiate
Hallo,

leider fiel mir keine bessere Überschrift ein um mein Problem zu schildern.
Ok, es geht um mein Tool das ich privat für mich programmiere da ich derzeit 201 Filme auf die 1 genau habe.^^
Folgendes passiert aber nun, nachdem man auf eine Grafik klickt zeigt er an das es noch in Bearbeitung ist, was ja richtig ist.
Doch kommt man nur mit der Maus über die gleiche Grafik erneut, verschiebt die Repeat-Schleife das Fenster und gibt die selbe Meldung erneut aus.

Woran kann das liegen?

Hier bekommt ihr die besagte Repeat-Schleife:

Code: Alles auswählen

Procedure moviez_repeat()
SetWindowColor(#MoviezWinMain,RGB(255,255,255))

Structure pointer
  win_x.l
  win_y.l
EndStructure
Mouse.pointer
lastMouse.pointer

Repeat
Event = WaitWindowEvent(1)
;If Event = #PB_Event_CloseWindow
;  Quit=1
;EndIf
If Event
  x=WindowMouseX(#MoviezWinMain)
  y=WindowMouseY(#MoviezWinMain)
  If (oldx<>x) Or (oldy<>y)
    If GadgetHoverCheck(x,y,#SystemImageThree)
      StatusBarText(0,0,"Moviez Schließen",#PB_StatusBar_BorderLess)
    Else
      StatusBarText(0,0,"",#PB_StatusBar_BorderLess)
    EndIf
    If GadgetHoverCheck(x,y,#WelcomeImageOne)
      SetGadgetState(#WelcomeImageOne,ImageID(#WelcomeMoviesHover))
    Else
      SetGadgetState(#WelcomeImageOne,ImageID(#WelcomeMovies))
    EndIf
    If GadgetHoverCheck(x,y,#WelcomeImageTwo)
      SetGadgetState(#WelcomeImageTwo,ImageID(#WelcomeAddMoviesHover))
    Else
      SetGadgetState(#WelcomeImageTwo,ImageID(#WelcomeAddMovies))
    EndIf
    If GadgetHoverCheck(x,y,#WelcomeImageThree)
      SetGadgetState(#WelcomeImageThree,ImageID(#WelcomeOptionsHover))
    Else
      SetGadgetState(#WelcomeImageThree,ImageID(#WelcomeOptions))
    EndIf
    If GadgetHoverCheck(x,y,#WelcomeImageFour)
      SetGadgetState(#WelcomeImageFour,ImageID(#WelcomeQuitHover))
    Else
      SetGadgetState(#WelcomeImageFour,ImageID(#WelcomeQuit))
    EndIf
    oldx=x
    oldy=y
  EndIf
EndIf

lastMouse\win_x=Mouse\win_x
lastMouse\win_y=Mouse\win_y
GetCursorPos_(Mouse)
MoveX=lastMouse\win_x-Mouse\win_x
MoveY=lastMouse\win_y-Mouse\win_y
If GetAsyncKeyState_(#VK_LBUTTON)
  MouseL+1
Else
  MouseL=0
  Scroll=0
EndIf
If Mouse\win_x>win_x And Mouse\win_x<win_x+win_w And Mouse\win_y>win_y And Mouse\win_y<win_y+win_h And MouseL=1
  scroll=1
EndIf
If Scroll
  win_x-MoveX
  win_y-MoveY
EndIf
ResizeWindow(#MoviezWinMain,win_x,win_y,win_w,win_h)

  Select Event
    Case #PB_Event_Menu
      Select EventMenu()
        Case #MenuItemQuit
          Quit=1
      EndSelect
    Case #PB_Event_Gadget
      Select EventGadget()
        Case #SystemImageThree
          Quit=1
        Case #WelcomeImageOne
          MessageRequester(app_name$,"Dieser Bereich wird noch fertig gestellt...")
        Case #WelcomeImageTwo
          MessageRequester(app_name$,"Dieser Bereich wird noch fertig gestellt...")
        Case #WelcomeImageThree
          MessageRequester(app_name$,"Dieser Bereich wird noch fertig gestellt...")
        Case #WelcomeImageFour
          Quit=1
      EndSelect
  EndSelect
Until Quit=1
EndProcedure
Vielleicht blickt einer von Euch da durch?
Auch uploade ich die aktuelle Release Version 0.0.0.3 damit ihr Euch noch genauer ein Bild davon machen könnt was ich meine:

Moviez Version 0.0.0.3: http://uploaded.to/file/bi5m3s


Viele Grüße
Radiate

Re: Ungenaue Repeat Ausgabe

Verfasst: 10.02.2010 02:48
von ts-soft
Ohne testbaren Code werde ich Dir nicht helfen können, nur einen guten Rat geben:
EnableExplicit und alle Variablen deklarieren, dann hast eine grosse Fehlerquelle
erstmal bereits ausgeschlossen.
Ich mache das Grundsätzlich, so bin ich mir sicher das sich nur Logikfehler einschleichen,
die kann man dann mit dem Debugger finden (vorausgesetzt man hat einen läuffähigen Code)

Gruß
Thomas

Re: Ungenaue Repeat Ausgabe

Verfasst: 10.02.2010 03:04
von Kaeru Gaman
deine zeile

Code: Alles auswählen

If Event
ist genau falsch, da sollte

Code: Alles auswählen

If Event = #Null
hin, weil solcher krempel nur dann ausgeführt werden sollte, wenn kein Event vorliegt.

ansonsten, wie ts sagte, bitte lauffähigen code posten.

Re: Ungenaue Repeat Ausgabe

Verfasst: 10.02.2010 03:16
von Radiate
Ok, das war ja schon sehr schnell mit euren Antworten, viele Dank dafür.

@ TS-Soft:
Ich weiß zwar nicht was Du mit "testbaren Code" meinst aber ich habe mal das gesamte Projekt, also die Grafiken, den Sourcecode und die Exe in ein Archiv gepackt und hochgeladen.

Hier sind die Grafiken, der gesamte Sourcecode und die Anwendung selber: http://uploaded.to/file/rw5fmr


Viele Grüße
Radiate

Re: Ungenaue Repeat Ausgabe

Verfasst: 10.02.2010 03:44
von ts-soft
So gross ist der Code ja garnicht, aber ungewöhnliche Anordnung, nicht sehr übersichtlich.
Das ein SetGadgetState auch ein Event auslöst sollte eigentlich klar sein, und das man dann
natürlich nur auf Click reagieren sollte auch :)

Code: Alles auswählen

        Case #WelcomeImageOne
          If EventType() = #PB_EventType_LeftClick
            MessageRequester(app_name$,"Dieser Bereich wird noch fertig gestellt...")
          EndIf
        Case #WelcomeImageTwo
          If EventType() = #PB_EventType_LeftClick
            MessageRequester(app_name$,"Dieser Bereich wird noch fertig gestellt...")
          EndIf
        Case #WelcomeImageThree
          If EventType() = #PB_EventType_LeftClick
            MessageRequester(app_name$,"Dieser Bereich wird noch fertig gestellt...")
          EndIf
Und arbeite an Deinem Stil, deklariere alle Variablen und verfrachte Code, der nicht
Aufgrund eines Events abgefragt wird in eine Timerprocedure und nicht ins Event-Loop.
Das flimmert ja wie Lämmerschwanz.

Gruß
Thomas

Re: Ungenaue Repeat Ausgabe

Verfasst: 10.02.2010 03:50
von Radiate
Weiß zwar nicht was Du mit "Flimmern" meinst, weil bei mir flimmert da nichts.

Aber @ TS-Soft:

Großartig, einfach dicken Dank an Dich !!! :mrgreen:

Es funktioniert, einzige Prob nur noch warum er das Fenster dennoch verschiebt?
Was ist denn eigentlich genau EnableExplizit?
Soweit ich die Hilfe zu Rat ziehen konnte, und die habe ich leider nur auf englisch, steht dort das er dann alle Variablen prüft ob sie deklariert bzw. definiert wurden.
Ist das so richtig?


VG

Version?

Verfasst: 10.02.2010 10:35
von Kaeru Gaman
Radiate hat geschrieben:Soweit ich die Hilfe zu Rat ziehen konnte, und die habe ich leider nur auf englisch ...
peinlich. hat deine Schwarzkopie keine deutsche Help enthalten?
vielleicht solltest du eine Vollversion kaufen, bevor du dich hier blicken läßt...?

Re: Ungenaue Repeat Ausgabe

Verfasst: 10.02.2010 11:05
von hjbremer
:bounce:

Re: Ungenaue Repeat Ausgabe

Verfasst: 10.02.2010 18:16
von Radiate
lol ! :?

Wer sagt denn das ich nicht die Demo habe oder eine englische Vollversion?
Davon abgesehen ist mein Sourcecode gerade mal 664 Zeilen lang und soweit Fantaisie Software angegeben hat, sind in der Demo 800 Zeilen erlaubt.

Also erstmal wieder schön brav werden und nicht zu voreilig Schlüsse ziehen...


...vielen Dank!

Re: Ungenaue Repeat Ausgabe

Verfasst: 10.02.2010 18:24
von Kaeru Gaman
weil die Demo auch die Deutsche Hilfe enthält, und die Vollversion mehrere Sprachen...?
und da wir wissen, dass auf ettlichen Portalen kopierte Pakete rumliegen, und das hier das offizielle Herstellerforum ist, sind wir da etwas öfters mißtrauisch.
es besteht kein vernünftiger Grund, warum du keine Deutsche Hilfe hast, außer du hast eine Schwarzkopie eines englischen Paketes,
ebensowenig wie kein Grund besteht, mit der 4.30 zu arbeiten, die seit zwei Jahren nicht mehr aktuell ist.