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:
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
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