Seite 5 von 7

Re: Erstelltes Programm läuft nicht überall

Verfasst: 09.05.2016 21:42
von udg
Ja was soll man dazu noch sagen. Bei dem Typ wo es die ganze Zeit nicht ging gehts jetzt. Ich schicks dir jetzt.
Da konnte ich dir ja eigtl. nun doch nicht helfen. Ich frage mich warum das so unterschiedlich auf jeden PC ist.

Erstellt habe ich es hier mit PureBasic v5.30 unter Win7 64 bit.

und unter win7 32bit läufts auch.

Dann liegt es definitiv am Überwachen der Tastatur.

Re: Erstelltes Programm läuft nicht überall

Verfasst: 09.05.2016 21:56
von northstarex
ich kenne das nur zu genüge... von damals da wo man noch direkt in 6502 oder Z80 gecodet hat... ^^

Re: Erstelltes Programm läuft nicht überall

Verfasst: 09.05.2016 22:27
von udg
Getestet auf Laptop:
[22:22:06] WhiteWolf: the intro or what you call it optionscreen runs fast then after pressing 2 winua starts amiga emu it takes a long time about a minute that the game starts
[22:22:55] inc @ A5 Recordings: this is normal. glad to know. so it works fine. if you press "1" the game starts in fullscreen.

Re: Erstelltes Programm läuft nicht überall

Verfasst: 09.05.2016 22:54
von Sicro
Möglicherweise drücken deine Kollegen auf die "falsche" 1- und 2-Taste (Ziffernblock).
Fragst du auch beide Varianten, wie nachfolgend gezeigt, ab?

Code: Alles auswählen

InitSprite()
InitKeyboard()
OpenWindow(0, 0, 0, 100, 100, "")
OpenWindowedScreen(WindowID(0), 0, 0, 100, 100)
Repeat
  Event = WindowEvent()
  
  ExamineKeyboard()
  If KeyboardReleased(#PB_Key_1) Or KeyboardReleased(#PB_Key_Pad1)
    Debug "1 wurde gedrückt"
  EndIf
  If KeyboardReleased(#PB_Key_2) Or KeyboardReleased(#PB_Key_Pad2)
    Debug "2 wurde gedrückt"
  EndIf
  
Until Event = #PB_Event_CloseWindow

Re: Erstelltes Programm läuft nicht überall

Verfasst: 09.05.2016 23:20
von udg
hm. gute Frage

Kurioser Weise gingen auf meinen 2 PCs alle Tastaturabfragen. egal welchen KeyAbfrageCode ich da verwendet habe. Das es solche unterschiede zu anderen PCs macht war mir nicht klar.

ich habe nach sehr langem hin und her nun diesen Code auf PCs zum laufen bekommen wo es vorher anders nicht ging:

Code: Alles auswählen

...
Repeat
  Event = WindowEvent()
  EventGadget = EventGadget()

  ExamineKeyboard()

If GetAsyncKeyState_(#VK_1); Taste "1" 
...
bezieht sich natürlich nur auf die normalen Ziffern.
ich sollte deinen code mal einbinden.

Hast Du das Tool mal bei Dir gestest? Läufts da?

Re: Erstelltes Programm läuft nicht überall

Verfasst: 10.05.2016 13:58
von northstarex
jo... das mit den Tastenblock hatte ich hier auch schon im Gedanken, aber das war es auch net.
Mein Tool läuft ja soweit... ich werde das wohl beide Tools kreuzen... Das mit der Font ist zwar weiterhin auch ein Mirakel, aber da gehen andere Möglichkeiten, so wie ich das gesehen hatte.

Re: Erstelltes Programm läuft nicht überall

Verfasst: 10.05.2016 18:17
von Sicro
udg hat geschrieben:

Code: Alles auswählen

[...]
ExamineKeyboard()

If GetAsyncKeyState_(#VK_1); Taste "1" 
[...]
Wenn du keine Tastaturabfragen mit den PB-Funktionen durchführst, brauchst du das ExamineKeyboard() nicht mehr.
Deine GetAsyncKeyState-Abfrage ist falsch. Richtig ist:

Code: Alles auswählen

If GetAsyncKeyState_(#VK_1) & 1
[...]

Re: Erstelltes Programm läuft nicht überall

Verfasst: 10.05.2016 23:56
von udg
Sicro hat geschrieben:
udg hat geschrieben:

Code: Alles auswählen

[...]

Deine GetAsyncKeyState-Abfrage ist falsch. Richtig ist:[code]If GetAsyncKeyState_(#VK_1) & 1
[...]
Danke für den Hinweis. Kurioserweise hat es trotzdem funktioniert auch ohne: "& 1"

aber das Problem ist immer noch nicht vom Tisch.

Bei meinen inzwischen 3 PCs (Laptop noch ausgekramt) funtkioniert es, auch bei anderen Bekannten, bei "northstarex" nicht. Wie soll man da eine Fehlersuche starten?
Habe in die IF Schleife einen Messagerequester reingemacht, damit man auch Visuell sieht: "Ah da wurde Taste 1 oder 2 gedrückt" aber noch nicht mal der MessageRequester wird bei ihm angezeigt.
Bei mir natürlich auf den PCs alles fein wie es soll.

Keine Chance.
So lange alles bei mir läuft kann ich es nicht nachvollziehen.

Schade um die Arbeit :S vor allem kann es ja nicht falsch sein was ich mache, denn es läuft.
Auch nachdem ich Deine Tastaturabfrage eingebaut habe, statt der meinen, lief es bei ihm nicht. Hier alles wunderbar.

Kein Ahnung.

Re: Erstelltes Programm läuft nicht überall

Verfasst: 11.05.2016 07:16
von ts-soft
udg hat geschrieben:Schade um die Arbeit :S vor allem kann es ja nicht falsch sein was ich mache, denn es läuft.
Schön wenn Deine Tests positiv verlaufen sind, das hat aber nichts damit zu tun. Es muss auch als richtig Dokumentiert sein, ansonsten
sind es mehr oder weniger Zufälle!

Mit Try & Error kann man kein fehlerfreies Programm erstellen, Wissen ist wichtiger!

Re: Erstelltes Programm läuft nicht überall

Verfasst: 11.05.2016 09:56
von silbersurfer
@udg
Hast Du das Tool mal bei Dir gestest? Läufts da?
http://www.filedropper.com/andererinkeycode
bei mir lauft deine Tastatur abfrage auch nicht, und das hat jetzt nichts mehr mit Direktx zu tun
Ich denke es liegt daran wie Du deine Events verarbeitetest

Als test habe Ich drei Varianten ausprobiert und alle laufen so wie Sie sollen

1.

Code: Alles auswählen

InitSprite()
InitKeyboard()
OpenWindow(0, 0, 0, 100, 100, "")
OpenWindowedScreen(WindowID(0), 0, 0, 100, 100)
Repeat
  Event = WaitWindowEvent()
 
  ExamineKeyboard()
  If KeyboardReleased(#PB_Key_1) Or KeyboardReleased(#PB_Key_Pad1)
    Debug "1 wurde gedrückt"
  EndIf
  
  If KeyboardReleased(#PB_Key_2) Or KeyboardReleased(#PB_Key_Pad2)
    Debug "2 wurde gedrückt"
  EndIf
 
Until Event = #PB_Event_CloseWindow
2.

Code: Alles auswählen

InitSprite()
OpenWindow(0, 0, 0, 100, 100, "")
OpenWindowedScreen(WindowID(0), 0, 0, 100, 100)
Repeat
  Event = WaitWindowEvent()

  If GetAsyncKeyState_(#VK_1) & 1 Or GetAsyncKeyState_(#VK_NUMPAD1) & 1
    Debug "1 wurde gedrückt"
  EndIf 
  
  If GetAsyncKeyState_(#VK_2) & 1 Or GetAsyncKeyState_(#VK_NUMPAD2) & 1
    Debug "2 wurde gedrückt"
  EndIf
 
Until Event = #PB_Event_CloseWindow
3.

Code: Alles auswählen

InitSprite()
OpenWindow(0, 0, 0, 100, 100, "")
OpenWindowedScreen(WindowID(0), 0, 0, 100, 100)


AddKeyboardShortcut(0,#PB_Shortcut_1, 1001)
AddKeyboardShortcut(0,#PB_Shortcut_2, 1002)
AddKeyboardShortcut(0,#PB_Shortcut_Pad1, 1003)
AddKeyboardShortcut(0,#PB_Shortcut_Pad2, 1004)

Repeat
  Event = WaitWindowEvent()

  Select event
    Case #PB_Event_Menu
      Select EventMenu()
        Case 1001,1003
           Debug "1 wurde gedrückt"
        Case 1002,1004 
           Debug "2 wurde gedrückt"
      EndSelect    
  EndSelect    
 
Until Event = #PB_Event_CloseWindow