Autor Thema: ASCII-Code von Enter?  (Gelesen 20821 mal)

Kyoko12

  • Beiträge: 59
    • Profil anzeigen
Gespeichert
« am: 19. October 2005, 14:46 »
Hi, ich code gerade an einer String.Shell, weil ich endlich von miener Live-Shell weg will, und da überprüfe ich einfach ob das Geshriebene Zeichen die Entertaste war. WEnn nicht, wird es in den String geschrieben, wenn ja, dann wird das schreiben beendet und der string mit vorhandenen Kommandos verglichen. Aber welchen ASCII-code hat die Enter-Taste? ich kann sie auf keiner ASCII-Tabelle fidnen. Bin ich einfach zu Blöd??

mfg,
Kyoko12

stultus

  • Beiträge: 486
    • Profil anzeigen
Gespeichert
« Antwort #1 am: 19. October 2005, 15:34 »
Enter hat keinen ASCII, das is von System zu system unterschiedlich (Windows hat nur nen asc10, *nix hat asc10/13, ... kann sein das ich die werte vertauscht hab ;) )
MSN: planetconquestdm@hotmail.de
ICQ: 190-084-185

... Wayne?

DarkThing

  • Beiträge: 652
    • Profil anzeigen
Gespeichert
« Antwort #2 am: 19. October 2005, 15:55 »
Bei mir hat es funktioniert wenn ich die Eingabe mit '\n' verglichen hab.
Also so in etwa:

key = getch();
if(key == '\n')
{
    // Enter wurde gedrückt
}

kevin

  • Administrator
  • Beiträge: 2 767
    • Profil anzeigen
Gespeichert
« Antwort #3 am: 19. October 2005, 16:33 »
Zitat von: N00B
Windows hat nur nen asc10, *nix hat asc10/13, ... kann sein das ich die werte vertauscht hab ;)

Nein, falschrum und den doppelten intern auch nochmal falschrum. ;)

UNIX hat #10 (\n), Mac hat #13 (\r), Windows hat #13#10 (\n\r).
Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end.

Kyoko12

  • Beiträge: 59
    • Profil anzeigen
Gespeichert
« Antwort #4 am: 19. October 2005, 16:45 »
hat einer von euch ne idee wie ich dann in ASM schaue, ob der letzrte gedrückte knopf enter war?

bitmaster

  • Troll
  • Beiträge: 1 138
    • Profil anzeigen
    • OS-64 = 64 Bit Operating System
Gespeichert
« Antwort #5 am: 19. October 2005, 18:24 »
Es gibt natürlich einen ASCII-Code für Enter. Der lautet 13 also 0Dh. Wenn du dies z.B. mit den int 16h machst sieht das folgender maßen aus:

xor ah,ah
int 16h
cmp al,0Dh
je blablabla


Du kannst auch den Scancode prüfen der befindet sich dann in ah. Also z.B. so:

xor ah,ah
int 16h
cmp ah,1Ch ;Enter
je blablabla


Warum die anderen sagen das Enter keinen ASCII-Code hat verstehe ich nicht. Das sind zwei Beispiele. Also ASCII = 0DH und Scancode = 1Ch. Hoffe das ich helfen konnte.
In the Future everyone will need OS-64!!!

bitmaster

  • Troll
  • Beiträge: 1 138
    • Profil anzeigen
    • OS-64 = 64 Bit Operating System
Gespeichert
« Antwort #6 am: 19. October 2005, 18:28 »
Zitat von: taljeth
Zitat von: N00B
Windows hat nur nen asc10, *nix hat asc10/13, ... kann sein das ich die werte vertauscht hab ;)

Nein, falschrum und den doppelten intern auch nochmal falschrum. ;)

UNIX hat #10 (\n), Mac hat #13 (\r), Windows hat #13#10 (\n\r).
Das was du meinst wird beispielsweise im Texteditor geschrieben. Windows prüft ob enter gedrückt wurde (also ASCII=0Dh oder Scancode=1Ch) und speichert dann aber 0D0Ah. Der Scancode wird aber auch in Windows als 0Dh in ASCII übersetzt (mit dem Tastaturtreiber).
In the Future everyone will need OS-64!!!

WhiteDragon

  • Beiträge: 124
    • Profil anzeigen
Gespeichert
« Antwort #7 am: 19. October 2005, 18:32 »
Zitat von: bitmaster
Es gibt natürlich einen ASCII-Code für Enter. Der lautet 13 also 0Dh.


So ist es! Natürlich gibt es bei der AUSGABE eines Strings je nach System Unterschiede (manchen reicht der Wert 10 oder 13, manche wollen beide Werte im Sinne von CRLF). Aber der Wert der Enter-Taste als "Zeichen" (obwohl es natürlich kein Zeichen im Sinne von ASCII ist) ist eigentlich immer 13.

Falls du aber die Tastatur direkt abfragst, hat die normale Enter-Taste die Nummer 0x1c und die auf dem Nummernblock die Nummernfolge  0xe0 0x1c.

kevin

  • Administrator
  • Beiträge: 2 767
    • Profil anzeigen
Gespeichert
« Antwort #8 am: 19. October 2005, 18:55 »
Zitat von: WhiteDragon
So ist es! Natürlich gibt es bei der AUSGABE eines Strings je nach System Unterschiede (manchen reicht der Wert 10 oder 13, manche wollen beide Werte im Sinne von CRLF). Aber der Wert der Enter-Taste als "Zeichen" (obwohl es natürlich kein Zeichen im Sinne von ASCII ist) ist eigentlich immer 13.

Ja, ist natürlich richtig, da bin ich ein bißchen neben dem Thema gelandet. Bei der Eingabe wüßte ich von keinem System, das einen Doppelcode zurückliefert. Aber auch da kommt unter Unix 10 und nicht 13 wie bei DOS/Windows.
Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end.

Kyoko12

  • Beiträge: 59
    • Profil anzeigen
Gespeichert
« Antwort #9 am: 21. October 2005, 16:17 »
DAnke für eure Hilfe, jetzt läuft meine shell^^

mfg,
Kyoko12

 

Einloggen