Autor |
Beitrag |
soong
Hält's aus hier
Beiträge: 7
XP Prof. SP2
D5
|
Verfasst: So 12.06.05 19:53
Hallo!
Ich wollte mal euch fragen, ob ihr den ASCII für Pfeilrichtungen an der Tastatur kennt?
Ich bräuchte dies für ein Spiel ...
Danke im Voraus.
|
|
alzaimar
      
Beiträge: 2889
Erhaltene Danke: 13
W2000, XP
D6E, BDS2006A, DevExpress
|
Verfasst: So 12.06.05 19:55
ASCII-Codes gibts icht, nur 'Virtual Key' Codes. Die werden im OnKEyDown/Up-Event übergeben.
Sie sind in Windows.pas definiert (VK_xxxx -Konstanten).
|
|
Timosch
      
Beiträge: 1314
Debian Squeeze, Win 7 Prof.
D7 Pers
|
Verfasst: Mo 13.06.05 15:46
Die VK-Konstanten kenn ich nicht, aber die Werte sind:
links 37
hoch 38
rechts 39
runter 40
_________________ If liberty means anything at all, it means the right to tell people what they do not want to hear. - George Orwell
|
|
JayK
      
Beiträge: 1013
|
Verfasst: Mo 13.06.05 15:51
alzaimar hat folgendes geschrieben: | ASCII-Codes gibts nicht, |
Sollte ja dann schon zu genüge widerlegt sein  die ersten 32 ASCII-Zeichen sind für die Steuerung zuständig und da gehören die Cursortasten auf jeden Fall mit rein.
EDIT: Warum die Codes von Timosch von 38 bis 40 sind, weiß ich nich end;
alzaimar hat folgendes geschrieben: | nur 'Virtual Key' Codes. Die werden im OnKEyDown/Up-Event übergeben.
Sie sind in Windows.pas definiert (VK_xxxx -Konstanten). |
Ich frag mal meinen Vater nach diesen Konstanten... der kennt die glaub ich 
|
|
retnyg
      
Beiträge: 2754
SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
|
Verfasst: Mo 13.06.05 16:04
windows.pas hat folgendes geschrieben: | Delphi-Quelltext 1: 2: 3: 4:
| VK_LEFT = 37; VK_UP = 38; VK_RIGHT = 39; VK_DOWN = 40; | |
_________________ es gibt leute, die sind genetisch nicht zum programmieren geschaffen.
in der regel haben diese leute die regel...
|
|
alzaimar
      
Beiträge: 2889
Erhaltene Danke: 13
W2000, XP
D6E, BDS2006A, DevExpress
|
Verfasst: Mo 13.06.05 17:04
JayK hat folgendes geschrieben: | alzaimar hat folgendes geschrieben: | ASCII-Codes gibts nicht, |
Sollte ja dann schon zu genüge widerlegt sein die ersten 32 ASCII-Zeichen sind für die Steuerung zuständig und da gehören die Cursortasten auf jeden Fall mit rein. |
Wie bitte? Wer hat was und wo widerlegt? Zeig mal.... Und was hat den nun ASCII mit Virtual Key Konstanten zu tun?
wikipedia.de hat folgendes geschrieben: | Als Akronym steht ASCII für "American Standard Code for Information Interchange" (dt.: Amerikanischer Standard-Code für den Informationsaustausch). ASCII wurde als ANSI-Standard X3.4 im Jahr 1968 eingeführt. Als Vater des ASCII-Standards gilt Bob Bemer. |
Dir ist schon klar, das im Jahr 1968 keiner an Virtual Key Codes gedacht hat, zumal der gute Bill Gates gerade man 13 Lenzen auf dem Buckel hatte.
Tss.tss.tss 
|
|
retnyg
      
Beiträge: 2754
SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
|
Verfasst: Mo 13.06.05 17:14
die vk's sind werte die ein char haben kann. also 1 byte gross.
drückt man die taste RETURN, wird also VK_RETURN = ASCII #13 zurückgegeben.
drückt man die taste A, wird ascii #65 zurückgegeben.
die beziehung ascii-vk's ist also durchaus gegeben.
warum jetzt aber die cursor keys im bereich 37-40 liegen ist mir auch schleierhaft, denn laut meiner ascii-tabelle
(s. 264, MS-DOS 6.22 Handbuch) wären das die zeichen %,$,',(
_________________ es gibt leute, die sind genetisch nicht zum programmieren geschaffen.
in der regel haben diese leute die regel...
|
|
alzaimar
      
Beiträge: 2889
Erhaltene Danke: 13
W2000, XP
D6E, BDS2006A, DevExpress
|
Verfasst: Mo 13.06.05 17:39
Andersrum wird doch ein Schuh draus!
ASCII war zuerst da, also gibt es keine ASCII Codes für Cursor, weil dur Cursortasten doch noch gar nicht erfunden waren... (na gut, Terminals gab es schon). Auf jeden Fall gibt es keine ASCII-Codes für Windows-Cursortasten. Basta.
Die Steuerzeichen 0..31 sind für TTY und für die Steuerung einer seriellen Übertragung gedacht und nicht für Windows. Deswegen heissen die Steuerzeichen ja auch nicht Windows-Cursor-Zeichen. Bei den VK-Codes (Virtual Key) geht es darum, den von Windows unterstützten Tasten einer PC-Tastatur Symbole bzw. Nummern zu geben, damit man damit arbeiten kann.
Die Windows-Entwickler haben sich gedacht, das man sich das Leben als Programmierer vereinfachen kann, wenn man wenigstens die englischen druckbaren Buchstaben und Ziffern so kodiert, das VK_X = Ord ('X').
Das eine ENTER-Taste den VK-Code 13 hat, ist historisch bedingt. Das Zeichen ist ein 'Carriage Return', und ein 'Carriage' ist u.a. die Walze, die bei einer alten Schreibmaschine das Papier hält und -zwutsch- zurückläuft, wenn man an dem Hebel rechts gezogen hat. Dann brauchte es noch ein 'Line-Feed', also einen Zeilenvorschub, damit man weiter schreiben kann.
Ähnliches gilt für BACKSPACE und TAB. Aber wesentlich mehr Analogien gibts zwischen ASCII und VK-Codes nicht.
Weiter: VK_X Konstanten sind kein Char, sonden Words. Beweis: OnKeyDown/Up-Event. Da steht nunmal "Var Key : Word"...
Es gibt z.b. einen VK_SHIFT oder auch eine VK_LBUTTON-Code, der nichts mit ASCII zu tun hat.
Wenn hier von einer ASCII-VK_X Beziehung gesprochen wird, dann doch bitte auch von einer ASCII - "Alter der Forums-Teilnehmer" Beziehung. Denn es gilt: Für alle Forums-Teilnehmer F gibt es ein ASCII-Zeichen C mit Alter(F)=Ord(C). Da haben wir dann eine 100% Beziehung 
|
|
retnyg
      
Beiträge: 2754
SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
|
Verfasst: Mo 13.06.05 22:40
guck ma scharf in die windows.pas - da gibts keinen VK über 254
ein VK entspricht folglich immer einem ascii-code.
also kein grund hier gleich an die wand zu gehen ^^
btw: bei DOS/turbo pascal waren die ascii codes für die cursor-tasten zw. 72 und 80 verstreut, es wurde allerdings zuerst #0 zurückgegeben und man musste durch eine 2. readkey abfrage dann den wert des "special keys" nach-holen.
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9:
| Ch := ReadKey; if Ch = #0 then case ReadKey of #45: Ch := CExit; #72: Ch := CUp; #75: Ch := CLeft; #77: Ch := CRight; #80: Ch := CDown; end; |
quelle: krazz.net/retnyg/OMF_INST.PAS
_________________ es gibt leute, die sind genetisch nicht zum programmieren geschaffen.
in der regel haben diese leute die regel...
|
|
JayK
      
Beiträge: 1013
|
Verfasst: Di 14.06.05 21:18
retnyg hat folgendes geschrieben: | denn laut meiner ascii-tabelle
(s. 264, MS-DOS 6.22 Handbuch) wären das die zeichen %,$,',( |
Für Windows und DOS gibts 2 verschiedene Tabellen. Man kommt unter Windows an beide Tabellen ran (mit ALT + (0) Code) für Windows muss die (0) gesetzt werden, für DOS lässt man sie weg.
guckt mal in euer Tafelwerk, vllt. steht da die Tabelle drin. Ich hab das orangene Teil von Patec (oder so) und da steht das drin (ist nicht als Werbung gedacht!)
|
|
retnyg
      
Beiträge: 2754
SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
|
Verfasst: Di 14.06.05 21:37
was verstehst du unter tafelwerk ? 
_________________ es gibt leute, die sind genetisch nicht zum programmieren geschaffen.
in der regel haben diese leute die regel...
|
|
JayK
      
Beiträge: 1013
|
Verfasst: Mi 15.06.05 18:42
retnyg hat folgendes geschrieben: | was verstehst du unter tafelwerk ?  |
Formelsammlung... das Teil, wo die genzen Formeln aus der Physik, viele Konstanten, Chemische Elemtente, Periodensystem d. Elemente, und eine Windows und DOS ASCII-Tabelle drin sind. Wenn ihr nicht mehr zur Schule geht könnt ichs ja vllt. verzeihen, aber wer kennt denn den Begriff Tafelwerk nicht  (ich habs Anfang sechste Klasse gekauft, manche kriegen's vllt. auch erst ab der Siebten, glaub ich aber nicht, da man ja spätestens ab Sechste Physik hat)
|
|
alzaimar
      
Beiträge: 2889
Erhaltene Danke: 13
W2000, XP
D6E, BDS2006A, DevExpress
|
Verfasst: Mi 15.06.05 23:24
retnyg hat folgendes geschrieben: | guck ma scharf in die windows.pas - da gibts keinen VK über 254
ein VK entspricht folglich immer einem ascii-code.
|
Aber retnyg: Bloss weil die Virtual Keys von 0-254 gehen, sind sie doch noch lange kein ASCII-Code. Nach Deiner Argumentation wäre ja jedes Byte ein ASCII Code. Versteh das doch. ASCII = Zeichen + Steuercodes von 1968. Klar definiert. Eindeutig. Standartisiert. Jeder Code hat genau eine Bedeutung. Nix Cursor. Nix Windows. Nix Virtual Keys. Mir geht normalerweise nicht die Hutschnur hoch, aber bei deiner Borniertheit (Tschuldige) krieg ich die Krise.
retnyg hat folgendes geschrieben: | btw: bei DOS/turbo pascal waren die ascii codes für die cursor-tasten zw. 72 und 80 verstreut, es wurde allerdings zuerst #0 zurückgegeben und man musste durch eine 2. readkey abfrage dann den wert des "special keys" nach-holen.
|
Ja ja die guten alten Zeiten. Auch das war nicht ASCII, sondern nur zufällig irgend ein Code. Weil die Cursortasten irgendwie codiert sein müssen. ASCII definiert für die Zahlen von 0-255 Steuerzeichen und druckbare Zeichen. Die Zeichen von 0-31 sind für Steuerzeichen reserviert, und die sind alle vergeben. da ist nun mal kein Platz mehr für Cursortasten. Wie eben schon erwähnt hat jeder ASCII-Code genau eine Bedeutung. Du verwechselst einfach Bytes/Chars mit ASCII.
Ich hoffe, damit ist die Diskussion endlich mal am Ende. Sieh es ein. ASCII<>Cursorkeys. Zeig mir die ASCII-Codes für Cursortasten in einer ASCII-Tabelle mit Quellenangabe. Ich wiederhole: ASCII-Codes, nicht Charactercodes. #72 ist kein ASCII, sondern einfach nur ein Character. Aber der ASCII-Code für 'H' ist eben 72. Und der ASCII-Code für 'Cursor left' ist .... nicht definiert. Eben genausowenig wie der ASCII-Code für 'Drei Bier und die Wirtin'.

|
|
Timosch
      
Beiträge: 1314
Debian Squeeze, Win 7 Prof.
D7 Pers
|
Verfasst: Do 16.06.05 12:06
Soweit ich weiß, verwendet Windows nicht mehr ASCII sondern ANSI. Korrigiert mich, wenn ich mich irre.
Um die Tastaturcodes zu kriegen, schreibt doch einfach ein Programm, dass euch im onkeydown-Event die Zahl der Taste ausgibt. Dann startet das Programm, drückt Cursor links, und da steht 37.
_________________ If liberty means anything at all, it means the right to tell people what they do not want to hear. - George Orwell
|
|
alzaimar
      
Beiträge: 2889
Erhaltene Danke: 13
W2000, XP
D6E, BDS2006A, DevExpress
|
Verfasst: Do 16.06.05 12:11
Oder in Windows.PAS nachschauen. Mir gings nur darum, das man nicht alles was zwischen 0 und 255 rumlungert als ASCII bezeichnen soll.
|
|
JayK
      
Beiträge: 1013
|
Verfasst: Do 16.06.05 15:35
@alzaimar:
Natürlich hast du recht, dass nicht alles, was im Zahlenbereich 0-255 liegt ASCII ist. Meine Bepunktung der Klassenarbeiten ist auch nicht ASCII sondern Lehrer-Klaue.
Aber egal, was du auch für Argumente bringst, es ist mir völlig schnuppe, die Virtual-Key-Variablen zeigen irgendwo (vllt. durch den Char-Type) immer auf einen ASCII.
Sag mal, warum du dich eigentlich weigerst, das anzunehmen.
Und im Tafelwerk von mir steht:
Auszug aus dem Paetec Tafelwerk: | Die ersten 32 Zeichen (0 bis 31) sind im allgemeinen für die Steuerung reserviert. |
©1996 paetec Gesellschaft für Bildung und Technik mbH, Berlin
Ich glaube schon, dass man die Cursortasten zur Steuerung zählen kann...
@Timosch: Ja stimmt. Windows verwendet ANSI. Mekt man deutlich, wenn man Batchdateien mit dem Windows-Editor (ANSI) schreibt und Umlaute oder Sonderzeichen verwendet und das dann ablaufen lässt. Batch benutzt nähmlich ASCII und da ist die Belegung etwas anders.
|
|
Timosch
      
Beiträge: 1314
Debian Squeeze, Win 7 Prof.
D7 Pers
|
Verfasst: Do 16.06.05 17:31
Meines Wissens ist das so: Früher wurden die ASCII-Zeichen bis 31 für Sondertasten verwendet. Ich hab ein PC-Buch von 1982, und da steht das so drin. Heute sind das spezielle Codes. Korrigiert mich, wenns nicht stimmt, ich bin Jahrgang 90.
_________________ If liberty means anything at all, it means the right to tell people what they do not want to hear. - George Orwell
|
|
andras
      
Beiträge: 460
Win XP, Win Vista Home Premium, Ubuntu Dapper Drake
Delphi 2005 Pers
|
Verfasst: Do 16.06.05 17:54
probiers mal damit links:31, rechts 30, rauf 28, runter 29
hab da ein kleines nettes programm das mir von jeder taste den ASCII liefert, wenn man sie drückt
ich habs von hier runtergeladen: www.manschula-digital.info.ms
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Do 16.06.05 17:57
JayK hat folgendes geschrieben: |
Aber egal, was du auch für Argumente bringst, es ist mir völlig schnuppe, die Virtual-Key-Variablen zeigen irgendwo (vllt. durch den Char-Type) immer auf einen ASCII.
|
Das ist aber Zufall. Genauso fällt jede Zahl zwischen 1 und 45 auf eine Kästchen auf dem Lottoschein.
|
|
JayK
      
Beiträge: 1013
|
Verfasst: Do 16.06.05 18:03
|
|
|