Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Scancode der Delete(bzw. Entf)-Taste

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Elektronix



Anmeldungsdatum: 29.06.2006
Beiträge: 742

BeitragVerfasst am: 24.04.2008, 10:50    Titel: Scancode der Delete(bzw. Entf)-Taste Antworten mit Zitat

Hallo, ich stehe ein bißchen auf dem Schlauch. Ich brauche den Scancode der ENTF- (DEL)-Taste. Der Liegt irgendwo bei 255+x, aber die CHR-Funktion gibt mir nur 255 aus.

Ich habe es schon mit
Code:

CHR$(255)+CHR$(83)

versucht, aber das funktioniert nicht. Ich bekomme immer nur "SSSS" ausgedruckt.verwundert
Wer weiß es besser?
_________________
Und die Grundgebihr is aa scho drin- DOS is jo nett.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
ThePuppetMaster



Anmeldungsdatum: 18.02.2007
Beiträge: 1839
Wohnort: [JN58JR]

BeitragVerfasst am: 24.04.2008, 12:43    Titel: Antworten mit Zitat

Code:

Do
    Dim T as String = InKey()
    If Asc(T) <> 0 Then
        Print asc(Left(T, 1)); " - "; asc(Mid(T, 2, 1))
        End
    End If
    Sleep 1, 1
Loop


Nach dem start einfach die taste drücken, deren code du wissen willst.


MfG
TPM
_________________
[ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Elektronix



Anmeldungsdatum: 29.06.2006
Beiträge: 742

BeitragVerfasst am: 24.04.2008, 14:49    Titel: Antworten mit Zitat

Ja, da kommt aber auch nur CHR$(255)+CHR$(83) raus. Das hab ich ja schon versucht.

Mein Code ist das hier (ist eigentlich eine Input-Routine aus den QBasic-Monter-FAQ, die wollte ich erweitern).

Code:
Dim Text As String, Key As String
text = "": key = ""
Dim PosX As Integer = 1, PosY As Integer = 1
Do
   key = INPUT(1)
   SELECT CASE key
      CASE CHR(27): EXIT DO                   'Esc-Taste -> Ende der Eingabe
      CASE CHR(8)                             'Backspace-Taste
         IF LEN(text) > 0 THEN                 'Falls Textlaenge > 0 ...
              text = LEFT(text, LEN(text) - 1) + " " '... Text um 1 Zeichen kuerzen
              Locate PosX , PosY, 1            'Dahinter den Cursor anzeigen
              PRINT text
              text = LEFT(text, LEN(text) - 1)
         END If
      Case Chr$(255) + Chr$(83) '#########Hier funktioniert was nicht
         Key = ""
         
         Print "Back"
      CASE CHR$(13)                 'Enter-Taste
         text = text + CHR(13)
         PosX = PosX + 1
      CASE CHR$(33) TO CHR(127)     'alfanumerisches Zeichen?
           text = text + key             'ansonsten Tastenzeichen anfuegen
     END SELECT                                 
     Locate PosX , PosY, 1            'Dahinter den Cursor anzeigen
     PRINT text                       'Eingegebenen Text anzeigen
                       'Warten bis 1 Taste betaetigt
LOOP

PRINT : PRINT "-----": PRINT
PRINT "Du hast Folgendes eingegeben:"
PRINT text

Sleep

_________________
Und die Grundgebihr is aa scho drin- DOS is jo nett.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
volta



Anmeldungsdatum: 04.05.2005
Beiträge: 1876
Wohnort: D59192

BeitragVerfasst am: 24.04.2008, 16:02    Titel: Antworten mit Zitat

ups, da habe ich was falsch verstanden verlegen
_________________
Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater.


Zuletzt bearbeitet von volta am 24.04.2008, 16:10, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Elektronix



Anmeldungsdatum: 29.06.2006
Beiträge: 742

BeitragVerfasst am: 24.04.2008, 16:06    Titel: Antworten mit Zitat

@Volta,
Das kann nicht gehen, CHR läßt nur einen Wert zu.

Habs jetzt gefunden:
CHR(255 + 83)
Danke an alle, die mir zu helfen versuchten. lächeln
_________________
Und die Grundgebihr is aa scho drin- DOS is jo nett.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
volta



Anmeldungsdatum: 04.05.2005
Beiträge: 1876
Wohnort: D59192

BeitragVerfasst am: 24.04.2008, 16:26    Titel: Antworten mit Zitat

Funktioniert auch nicht so richtig, oder?

versuch mal:
Code:
Dim Text As String, Key As String
text = "": Key = ""
Dim PosX As Integer = 1, PosY As Integer = 1
Do
  Do
    Key = InKey
    Sleep 1
  Loop Until Key<>""  'Warten bis 1 Taste betaetigt

  Select Case Key
    Case Chr(27): Exit Do                   'Esc-Taste -> Ende der Eingabe
    Case Chr(8)                             'Backspace-Taste
      If Len(text) > 0 Then                 'Falls Textlaenge > 0 ...
        text = Left(text, Len(text) - 1) + " " '... Text um 1 Zeichen kuerzen
        Locate PosX , PosY, 1            'Dahinter den Cursor anzeigen
        Print text;
        text = Left(text, Len(text) - 1)
      End If
    Case Chr(255,83)
      Key = ""

      'PRINT "Back"
    Case Chr(13)                 'Enter-Taste
      text = text + Chr(13)
      PosX = PosX + 1
    Case Chr(33) To Chr(127)     'alfanumerisches Zeichen?
      text = text + Key             'ansonsten Tastenzeichen anfuegen
  End Select
  Locate PosX , PosY, 1            'Dahinter den Cursor anzeigen
  Print text;                       'Eingegebenen Text anzeigen
Loop

Print : Print "-----": Print
Print "Du hast Folgendes eingegeben:"
Print text

Sleep
Fehlt noch die Cursor-Steuerung lächeln
_________________
Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Elektronix



Anmeldungsdatum: 29.06.2006
Beiträge: 742

BeitragVerfasst am: 24.04.2008, 16:39    Titel: Antworten mit Zitat

Ja, jetzt funktionierts. verwundert
Wie auch immer, danke für die Hilfe!
_________________
Und die Grundgebihr is aa scho drin- DOS is jo nett.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
ThePuppetMaster



Anmeldungsdatum: 18.02.2007
Beiträge: 1839
Wohnort: [JN58JR]

BeitragVerfasst am: 24.04.2008, 16:43    Titel: Antworten mit Zitat

Code:
Dim Text As String, Key As String
text = "": Key = ""
Dim PosX As Integer = 1, PosY As Integer = 1
Do
  Do
    Key = InKey
    Sleep 1
  Loop Until Key<>""  'Warten bis 1 Taste betaetigt

  Select Case Key
    Case Chr(27): Exit Do                   'Esc-Taste -> Ende der Eingabe
    Case Chr(8)                             'Backspace-Taste
      If Len(text) > 0 Then                 'Falls Textlaenge > 0 ...
        text = Left(text, Len(text) - 1) + " " '... Text um 1 Zeichen kuerzen
        Locate PosX , PosY, 1            'Dahinter den Cursor anzeigen
        Print text;
        text = Left(text, Len(text) - 1)
      End If
    Case Chr(255,83)
      Key = ""

      'PRINT "Back"
    Case Chr(13)                 'Enter-Taste
      text = text + Chr(13)
      PosX = PosX + 1
    Case Chr(33) To Chr(127)     'alfanumerisches Zeichen?
      text = text + Key             'ansonsten Tastenzeichen anfuegen
  End Select
  Locate PosX , PosY, 1            'Dahinter den Cursor anzeigen
  Print text;                       'Eingegebenen Text anzeigen
Loop

Print : Print "-----": Print
Print "Du hast Folgendes eingegeben:"
Print text

Sleep


Das mit dem Select Case is auch ziemlich ineffektiv.

Da du in jeder abfrage erste eine umwandlung vornimmst .. es is effektiver erst die umwandlung durchzuführen udn dann einen vergleich zu machen.

Code:

Dim T as String = inkey()
Select Case asc(left(t, 1))
    case 27
    case 100
    case 255
        Select Case asc(mid(t, 2, 1))
           case 78
           case 79
        End Select
end select



MfG
TPM
_________________
[ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 24.04.2008, 16:50    Titel: Antworten mit Zitat

Elektronix hat Folgendes geschrieben:
@Volta,
Das kann nicht gehen, CHR läßt nur einen Wert zu.

Habs jetzt gefunden:
CHR(255 + 83)
Danke an alle, die mir zu helfen versuchten. lächeln


äähm, ich will nicht wissen, was du für einen Compiler hast, aber ich vermute mal, volta hat das syntaktisch korrekte chr(255,83) vorgeschlagen?
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Elektronix



Anmeldungsdatum: 29.06.2006
Beiträge: 742

BeitragVerfasst am: 24.04.2008, 17:04    Titel: Antworten mit Zitat

Naja, beim ersten Versuch mit Voltas Code ist's halt nicht richtig gelaufen, beim zweiten dann schon... verwundert
Egal, wird wohl noch irgendwo ein Bug drin gewesen sein. Hab jetzt seinen Code übernommen.

Danke nochmals.
_________________
Und die Grundgebihr is aa scho drin- DOS is jo nett.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
volta



Anmeldungsdatum: 04.05.2005
Beiträge: 1876
Wohnort: D59192

BeitragVerfasst am: 25.04.2008, 14:38    Titel: Antworten mit Zitat

@Jojo
ja, das hatte ich, aber mit INPUT(1) zusammen funktionierte es natürlich nicht. grinsen

@Elektronix
ändere:
Case Chr(32) To Chr(127) 'alfanumerisches Zeichen?
sonst kannst du keine Leerzeichen eingeben mit den Augen rollen

@ThePuppetMaster
Zitat:
.. es is effektiver erst die umwandlung durchzuführen udn dann einen vergleich zu machen.

richtig, und es ist sogar noch scheller wenn man die langsamen MID, LEFT usw. vermeidet.
Code:
Dim Key as String
Do
  Key = InKey
  Sleep 1
Loop Until Key<>""  'Warten bis Taste betaetigt
Select Case Key[0]
    case 27
    case 8
    case 255
        Select Key[1]
           case 83
           case 79
        End Select
    case 32 to 127
    case 13
end select

_________________
Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz