Problem mit KeyboardInkey()

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
sen-me
Beiträge: 478
Registriert: 17.07.2005 16:02
Wohnort: Saarbrücken
Kontaktdaten:

Beitrag von sen-me »

Das hab ich immer, nur KeyboardInkey() setzt bei einer andren Taste als Buchstaben/Zahlen den 1. Buchstaben wieder ein, wenn ein = als Zuweisung genommen wurde.

wenn du If FullText$ <> "" machst bringt dir das nichts, denn FullText$ hat einen Inhalt dann bekommen...
Bild
THEEX
Beiträge: 804
Registriert: 07.09.2004 03:13

Beitrag von THEEX »

@Edel
In Fulltext$ schreibt sich ja sofort etwas rein, wenn irgendeine Taste gedrückt wurde, daher bringt eine Überprüfung wohl nichts. Natürlich könnte man jetzt hin gehn und eben halt nur Buchstaben und Zahlen als Eingabe zulassen. Aber ich denke mal, vielleicht sollte das hier irgendwer als Bug melden, ich selbst kann's kaum, weil ich der englsichen Sprach nicht mächtig bin...
Benutzeravatar
sen-me
Beiträge: 478
Registriert: 17.07.2005 16:02
Wohnort: Saarbrücken
Kontaktdaten:

Beitrag von sen-me »

Ich kanns machen, nur weiß ich nicht wo ^^
Bild
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

ich würds ja machen, aber ich hab die natur des fehlers noch nich ganz gerafft....
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
sen-me
Beiträge: 478
Registriert: 17.07.2005 16:02
Wohnort: Saarbrücken
Kontaktdaten:

Beitrag von sen-me »

Manchmal muss man ein Fehler nicht verstehen, es reicht wenn er da ist ^^
Bild
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Beitrag von edel »

Ich versteh es auch nicht ganz

Funktioniert doch so wie es soll :

Code: Alles auswählen

If InitSprite() And InitKeyboard() And OpenScreen(800,600,16,"")
  Repeat
    FlipBuffers()
    ClearScreen(RGB(0, 0, 0))
    
    ExamineKeyboard()
    
    FullText$ = ""
    FullText$ = KeyboardInkey()  ; fügt das nächste Zeichen zum aktuellen Text (sofern vorhanden) hinzu
    
    If FullText$
      s.s+FullText$
    EndIf
    
    ; Wenn wir die 'Backspace'-Taste drücken, löschen wir das letzte Zeichen
    ;
    If KeyboardReleased(#PB_Key_Back)
      s = Left(s, Len(s)-1)
    EndIf
    
    ; Ergebnis darstellen
    ;
    If StartDrawing(ScreenOutput())
      DrawingMode(1)
      FrontColor(RGB(128, 255, 0))
      DrawText(20, 20, "Gib einfach etwas Text ein...:")
      DrawText(20, 40, s)
      StopDrawing()
    EndIf
  Until KeyboardPushed(#PB_Key_Escape)
EndIf
THEEX
Beiträge: 804
Registriert: 07.09.2004 03:13

Beitrag von THEEX »

Ich fühl mich grad voll verars... (von PB). Vielleicht kapier ich ja was nicht, aber Edels Code müßte doch genau so funktioniern, wie der andere Code??!!
Benutzeravatar
sen-me
Beiträge: 478
Registriert: 17.07.2005 16:02
Wohnort: Saarbrücken
Kontaktdaten:

Beitrag von sen-me »

Aber wenn du FullText$ vor dem KeybordInkey leer machst, dürfte auch nichts darin sein, ergo schreib KeybordInkey doch was rein oder holt etwas zurück.
Bild
Benutzeravatar
Scarabol
Beiträge: 1427
Registriert: 30.11.2005 21:00

Beitrag von Scarabol »

Ich hab mal die codes verglichen:

1. wenn Fulltext$ + KeyboardInkey()
- kein Problem

2. wenn Fulltext$ = KeyboardInkey()
muss man ne If Abfrage machen
sonst gibts den oben genannten Fehler

Frage ist Wieso?

Gruß
Scarabol
Abgeschlossen Projekte:
Schreibmaschine, Bildschirmlupe, Wings3DtoOgreMeshConverter
Watch: PureArea

PB-V: 4
WinXP
Benutzeravatar
sen-me
Beiträge: 478
Registriert: 17.07.2005 16:02
Wohnort: Saarbrücken
Kontaktdaten:

Beitrag von sen-me »

In meinem Programm 8nicht Beispiel) habe ich auch eine If-Abfrage und es hatte trotzdem den Fehler...
Bild
Antworten