Bug in KeyboardInkey()

Fragen und Bugreports zur PureBasic 4.0-Beta.
Benutzeravatar
Batze
Beiträge: 1492
Registriert: 03.06.2005 21:58
Wohnort: Berlin
Kontaktdaten:

Bug in KeyboardInkey()

Beitrag von Batze »

Code: Alles auswählen

InitSprite()
InitKeyboard()

OpenWindow(0, 10, 10, 800, 600, "Test", #PB_Window_ScreenCentered | #PB_Window_MinimizeGadget)
If OpenWindowedScreen(WindowID(0), 0, 0, 800, 600, 0, 0, 0)
    Repeat
      FlipBuffers()
      ClearScreen($000000)
      
      ExamineKeyboard()
      FullText$ + KeyboardInkey()  ; fügt das nächste Zeichen zum aktuellen Text (sofern vorhanden) hinzu
      
      ; Wenn wir die 'Backspace'-Taste drücken, löschen wir das letzte Zeichen
      ;
      If KeyboardReleased(#PB_Key_Back)  
        FullText$ = Left(FullText$, Len(FullText$)-1)
      EndIf

      ; Ergebnis darstellen
      ;
      If StartDrawing(ScreenOutput())
        DrawingMode(1)
        DrawText(20, 20, "Gib einfach etwas Text ein...:", $00FF88)
        DrawText(20, 40, FullText$,                        $00FF88)
        StopDrawing()
      EndIf
    Until KeyboardPushed(#PB_Key_Escape)
  EndIf
-> Geht nicht

Code: Alles auswählen

InitSprite()
InitKeyboard()

If OpenScreen(800,600,16,"")
    Repeat
      FlipBuffers()
      ClearScreen($000000)
      
      ExamineKeyboard()
      FullText$ + KeyboardInkey()  ; fügt das nächste Zeichen zum aktuellen Text (sofern vorhanden) hinzu
      
      ; Wenn wir die 'Backspace'-Taste drücken, löschen wir das letzte Zeichen
      ;
      If KeyboardReleased(#PB_Key_Back)  
        FullText$ = Left(FullText$, Len(FullText$)-1)
      EndIf

      ; Ergebnis darstellen
      ;
      If StartDrawing(ScreenOutput())
        DrawingMode(1)
        DrawText(20, 20, "Gib einfach etwas Text ein...:", $00FF88)
        DrawText(20, 40, FullText$,                        $00FF88)
        StopDrawing()
      EndIf
    Until KeyboardPushed(#PB_Key_Escape)
  EndIf
-> Geht

Denke also, dass es sich um einen Bug in KeyboardInkey() handelt, der bei PB 3.94 nicht auftritt. Es wird bei Windowed Screens keine Großschreibung angenommen.
Hier sind meine Codes (aber die Seite geht gerade nicht):
http://www.basicpure.de.vu
Benutzeravatar
bobobo
jaAdmin
Beiträge: 3873
Registriert: 13.09.2004 17:48
Kontaktdaten:

Beitrag von bobobo »

und so geht's auch

Code: Alles auswählen

InitSprite() 
InitKeyboard() 

OpenWindow(0, 10, 10, 800, 600, "Test", #PB_Window_ScreenCentered | #PB_Window_MinimizeGadget) 
If OpenWindowedScreen(WindowID(0), 0, 0, 800, 600, 0, 0, 0) 
    Repeat 
      FlipBuffers() 
      ClearScreen($000000) 
      
      ExamineKeyboard()
      While WindowEvent():Wend ; <<--  WICHTIG ****
      FullText$ + KeyboardInkey()  ; fügt das nächste Zeichen zum aktuellen Text (sofern vorhanden) hinzu 
      
      ; Wenn wir die 'Backspace'-Taste drücken, löschen wir das letzte Zeichen 
      ; 
      If KeyboardReleased(#PB_Key_Back)  
        FullText$ = Left(FullText$, Len(FullText$)-1) 
      EndIf 

      ; Ergebnis darstellen 
      ; 
      If StartDrawing(ScreenOutput()) 
        DrawingMode(1) 
        DrawText(20, 20, "Gib einfach etwas Text ein...:", $00FF88) 
        DrawText(20, 40, FullText$,                        $00FF88) 
        StopDrawing() 
      EndIf 
    Until KeyboardPushed(#PB_Key_Escape) 
  EndIf
‮pb aktuel 6.2 windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Benutzeravatar
Batze
Beiträge: 1492
Registriert: 03.06.2005 21:58
Wohnort: Berlin
Kontaktdaten:

Beitrag von Batze »

oh, sorry, hatte ganz übersehen dass jemand geantwortet hat.
Danke bobobo.
Trotzdem ging der Code vor PB 4 noch, also sieht es für mich nach einem Bug aus.

Kann aber natürlich auch sein, dass sich die Funktionsweise der Keyboardbefehle geändert hat.
Hier sind meine Codes (aber die Seite geht gerade nicht):
http://www.basicpure.de.vu
Benutzeravatar
bobobo
jaAdmin
Beiträge: 3873
Registriert: 13.09.2004 17:48
Kontaktdaten:

Beitrag von bobobo »

das While WindowEvent():Wend MUSS nach dem Examinekeyboard() rein .. ist halt neuerdings so

hab das übrigens aus dem englischen Forum.
‮pb aktuel 6.2 windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Benutzeravatar
Batze
Beiträge: 1492
Registriert: 03.06.2005 21:58
Wohnort: Berlin
Kontaktdaten:

Beitrag von Batze »

kann leider nicht so toll englisch um mich da durch zu schlagen.
Soll jetzt heißen, dass das früher eigentlich auch falsch war, aber es trotzdem ging?
Naja egal, die Windoweventabfrage muss ich eh einbauen.
Hier sind meine Codes (aber die Seite geht gerade nicht):
http://www.basicpure.de.vu
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

bobobo hat geschrieben:das While WindowEvent():Wend MUSS nach dem Examinekeyboard() rein .. ist halt neuerdings so
is dir zufällig bekannt, warum?
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
bobobo
jaAdmin
Beiträge: 3873
Registriert: 13.09.2004 17:48
Kontaktdaten:

Beitrag von bobobo »

‮pb aktuel 6.2 windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

hm.. strange strange...

windows sind halt echt nich meine profession...

...ich speichers mal im hinterkopf...

im moment arbeite ich noch nich mit 4.0...

ich frag mich halt nur grad, wie dann ne "normale" keyboardabfrage parallel zu dem üblichen check vom close-button realisiert werden soll...
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
bobobo
jaAdmin
Beiträge: 3873
Registriert: 13.09.2004 17:48
Kontaktdaten:

Beitrag von bobobo »

normal genug?

Code: Alles auswählen

Enumeration
  #Window_0
  #Button_0
  #Button_1
  #Text_0
  #depressed
EndEnumeration
If OpenWindow(#Window_0, 216, 0, 600, 300,   "New window ( 0 ),#PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar")
  If CreateGadgetList(WindowID(#Window_0))
    ButtonGadget(#Button_0, 20, 130, 180, 60, "OK")
    ButtonGadget(#Button_1, 300, 130, 160, 60, "KO")
    TextGadget(#Text_0, 90, 30, 330, 50, "Drück mal ein D auf der Tastatur")
  EndIf
EndIf
AddKeyboardShortcut(#Window_0,#PB_Shortcut_D,#depressed)
Repeat
  Event = WaitWindowEvent()
  WindowID = EventWindow()
  GadgetID = EventGadget()
  EventType = EventType()
  If Event=#PB_Event_Menu And EventMenu()=#depressed
  Debug #depressed
    w+1
    Select w
    Case 1
      SetGadgetText(#Button_0,"KO")
      SetGadgetText(#Button_1,"OK")
    Case 2
      SetGadgetText(#Button_0,"OK")
      SetGadgetText(#Button_1,"KO")
      w=0
    EndSelect
  EndIf
  If Event = #PB_Event_Gadget
    If GadgetID = #Button_0 And w=1
    MessageRequester("So","Das hast Du nun davon",#MB_ICONSTOP)
    ElseIf GadgetID = #Button_1 And w=0
    MessageRequester("So","Das hast Du nun davon",#MB_ICONSTOP)
    EndIf
  EndIf
Until Event = #PB_Event_CloseWindow
End
‮pb aktuel 6.2 windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Gesperrt