Ungenaue Repeat Ausgabe

Für allgemeine Fragen zur Programmierung mit PureBasic.
Radiate
Beiträge: 114
Registriert: 10.02.2008 16:40
Kontaktdaten:

Ungenaue Repeat Ausgabe

Beitrag 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
» PureBasic 4.30
» AMD Athlon II X2 240 | 2048 RAM | Win XP SP 3
» Projekt(e): Fusion (eingestellt), SAS (eingestellt), Moviez
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: Ungenaue Repeat Ausgabe

Beitrag 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
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Re: Ungenaue Repeat Ausgabe

Beitrag 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.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Radiate
Beiträge: 114
Registriert: 10.02.2008 16:40
Kontaktdaten:

Re: Ungenaue Repeat Ausgabe

Beitrag 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
» PureBasic 4.30
» AMD Athlon II X2 240 | 2048 RAM | Win XP SP 3
» Projekt(e): Fusion (eingestellt), SAS (eingestellt), Moviez
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: Ungenaue Repeat Ausgabe

Beitrag 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
Radiate
Beiträge: 114
Registriert: 10.02.2008 16:40
Kontaktdaten:

Re: Ungenaue Repeat Ausgabe

Beitrag 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
» PureBasic 4.30
» AMD Athlon II X2 240 | 2048 RAM | Win XP SP 3
» Projekt(e): Fusion (eingestellt), SAS (eingestellt), Moviez
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Version?

Beitrag 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...?
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
hjbremer
Beiträge: 822
Registriert: 27.02.2006 22:30
Computerausstattung: von gestern
Wohnort: Neumünster

Re: Ungenaue Repeat Ausgabe

Beitrag von hjbremer »

:bounce:
Purebasic 5.70 x86 5.72 X 64 - Windows 10

Der Computer hat dem menschlichen Gehirn gegenüber nur einen Vorteil: Er wird benutzt
grüße hjbremer
Radiate
Beiträge: 114
Registriert: 10.02.2008 16:40
Kontaktdaten:

Re: Ungenaue Repeat Ausgabe

Beitrag 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!
» PureBasic 4.30
» AMD Athlon II X2 240 | 2048 RAM | Win XP SP 3
» Projekt(e): Fusion (eingestellt), SAS (eingestellt), Moviez
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Re: Ungenaue Repeat Ausgabe

Beitrag 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.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Antworten