Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Elektronix
Anmeldungsdatum: 29.06.2006 Beiträge: 742
|
Verfasst am: 24.04.2008, 10:50 Titel: Scancode der Delete(bzw. Entf)-Taste |
|
|
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
versucht, aber das funktioniert nicht. Ich bekomme immer nur "SSSS" ausgedruckt.
Wer weiß es besser? _________________ Und die Grundgebihr is aa scho drin- DOS is jo nett. |
|
Nach oben |
|
 |
ThePuppetMaster

Anmeldungsdatum: 18.02.2007 Beiträge: 1839 Wohnort: [JN58JR]
|
Verfasst am: 24.04.2008, 12:43 Titel: |
|
|
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 |
|
 |
Elektronix
Anmeldungsdatum: 29.06.2006 Beiträge: 742
|
Verfasst am: 24.04.2008, 14:49 Titel: |
|
|
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 |
|
 |
volta
Anmeldungsdatum: 04.05.2005 Beiträge: 1876 Wohnort: D59192
|
Verfasst am: 24.04.2008, 16:02 Titel: |
|
|
ups, da habe ich was falsch verstanden  _________________ 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 |
|
 |
Elektronix
Anmeldungsdatum: 29.06.2006 Beiträge: 742
|
Verfasst am: 24.04.2008, 16:06 Titel: |
|
|
@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.  _________________ Und die Grundgebihr is aa scho drin- DOS is jo nett. |
|
Nach oben |
|
 |
volta
Anmeldungsdatum: 04.05.2005 Beiträge: 1876 Wohnort: D59192
|
Verfasst am: 24.04.2008, 16:26 Titel: |
|
|
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  _________________ Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater. |
|
Nach oben |
|
 |
Elektronix
Anmeldungsdatum: 29.06.2006 Beiträge: 742
|
Verfasst am: 24.04.2008, 16:39 Titel: |
|
|
Ja, jetzt funktionierts.
Wie auch immer, danke für die Hilfe! _________________ Und die Grundgebihr is aa scho drin- DOS is jo nett. |
|
Nach oben |
|
 |
ThePuppetMaster

Anmeldungsdatum: 18.02.2007 Beiträge: 1839 Wohnort: [JN58JR]
|
Verfasst am: 24.04.2008, 16:43 Titel: |
|
|
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 |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 24.04.2008, 16:50 Titel: |
|
|
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.  |
ää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 |
|
 |
Elektronix
Anmeldungsdatum: 29.06.2006 Beiträge: 742
|
Verfasst am: 24.04.2008, 17:04 Titel: |
|
|
Naja, beim ersten Versuch mit Voltas Code ist's halt nicht richtig gelaufen, beim zweiten dann schon...
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 |
|
 |
volta
Anmeldungsdatum: 04.05.2005 Beiträge: 1876 Wohnort: D59192
|
Verfasst am: 25.04.2008, 14:38 Titel: |
|
|
@Jojo
ja, das hatte ich, aber mit INPUT(1) zusammen funktionierte es natürlich nicht.
@Elektronix
ändere:
Case Chr(32) To Chr(127) 'alfanumerisches Zeichen?
sonst kannst du keine Leerzeichen eingeben
@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 |
|
 |
|