Entwickler-Ecke
Sonstiges (Delphi) - Kennt jemand den ASCII in Dez für Pfeilrichtungen?
soong - So 12.06.05 19:53
Titel: Kennt jemand den ASCII in Dez für Pfeilrichtungen?
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 - 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 - Mo 13.06.05 15:46
Die VK-Konstanten kenn ich nicht, aber die Werte sind:
links 37
hoch 38
rechts 39
runter 40
JayK - 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 - 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; | |
alzaimar - 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 :autsch:
retnyg - 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 %,$,',(
alzaimar - 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 :autsch:
retnyg - 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:
http://krazz.net/retnyg/OMF_INST.PAS
JayK - 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 - Di 14.06.05 21:37
was verstehst du unter tafelwerk ? :gruebel:
JayK - Mi 15.06.05 18:42
retnyg hat folgendes geschrieben: |
was verstehst du unter tafelwerk ? :gruebel: |
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 :o (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 - 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. :wink:
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'.
:autsch:
Timosch - 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.
alzaimar - 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 - 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. :lol:
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 - 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.
andras - 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:
http://www.manschula-digital.info.ms
Delete - 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 - Do 16.06.05 18:03
Luckie hat folgendes geschrieben: |
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. |
Wie meinen? Versteh ich nicht :?!?:
alzaimar - Do 16.06.05 18:07
Lass uns es ganz einfach machen.
1. Zeig mir die ASCII Codes für die Cursortasten.
2. Im Jahr 1968 hat sich noch keiner um Cursortasten gekümmert. Es gab nämlich noch Keine.
3. Ob Du meinst, Cursorsteuerung gehört da rein, ist irrelevant, weil ASCII eben ein Standard ist.
4. Wenn du sagst, "VK-Codes sind ASCII" ist das umgangssprachlich von mir aus in Ordnung, aber eben nicht korrekt.
Die Virtual Key Variablen sind Konstanten und zeigen nirgens hin, sondern haben einen Wert. Einige Konstanten entsprechen den ASCII Codes (Die VK für Buchstaben und Ziffern, weils einfach praktisch ist). Aber einige sind eben keine ASCII Codes, sondern nur völlig wertfreie Zahlen. Du kannst ja von mir aus weiterhin behaupten, das VK_LEFT den ASCII Code 37 hat (das es den Wert 37 hat, steht ja ausser Frage). Bitte sehr, aber, welcher ASCII Code ist denn dann dem '%'-Zeichen zugeordnet? Auch die 37? Das geht aber nicht, weil jeder Code eineindeutig zugeordnet ist. Also, was jetzt? Ist 37 der ASCII Code für Cursor left, oder doch für '%'?
Soviel zur Beantwortung der Frage, warum ich mich weigere, Deine Argumente anzunehmen. Ich nehme nichts an, was offensichtlich falsch, oder sagen wir "nicht richtig" ist.
JayK - Do 16.06.05 18:08
Der Mihov ASCII-Master (:lol:) gibt mir folgende Werte aus:
Links: Dez 37, Hex 25
Oben: Dez 38, Hex 26
Rechts: Dez 39, Hex 27
Unten: Dez 40, Hex 28
Was sagt uns das? Wir haben auch noch Dezimal und Hexadezimal zu unterscheiden :roll:
JayK - Do 16.06.05 18:16
alzaimar hat folgendes geschrieben: |
Also, was jetzt? Ist 37 der ASCII Code für Cursor left, oder doch für '%'? |
Hmm, vllt. ist das eine ja Dezimal und das andere Hexadezimal :rofl:
alzaimar hat folgendes geschrieben: |
Soviel zur Beantwortung der Frage, warum ich mich weigere, Deine Argumente anzunehmen. Ich nehme nichts an, was offensichtlich falsch, oder sagen wir "nicht richtig" ist. |
Sind ja nicht nur meine Args, andere diskutieren doch auch noch mit ;) OK, eigentlich habe ich ja auch gar keine Ahnung von den komplizierteren Dingen, aber wenn im TW was von Steuerung steht, sind die Cursor da
bei mir nun mal mit drin. Obs jetzt richtig ist weiß ich nicht.
Der nächste Beitrag von dir enthält dann bestimmt:
[quote:6adf98d057="
alzaimar hat
noch nicht geschrieben:"][...] aber die Klappe so weit aufreißen [...][/quote:6adf98d057]
:lol: Entschärft?
alzaimar - Do 16.06.05 18:46
JayK hat folgendes geschrieben: |
alzaimar hat folgendes geschrieben: | Also, was jetzt? Ist 37 der ASCII Code für Cursor left, oder doch für '%'? | Hmm, vllt. ist das eine ja Dezimal und das andere Hexadezimal :rofl:
|
Und Octal, Binär und Aral!
Wir schliessen einen Kompromiss.
VK-Codes sind dezimal.
ASCII ist hexadezimal.
ANSI ist octal und
Oktan ist Aral!
So fertig. Feierabend. :beer: Ich lass Dir die ASCII-VK-Codes. Ach was. Ich schenke Sie Dir! :party:
Nachtrag: Ich habe mich wirklich selten so köstlich amüsiert. Besonders der Schluss.
Nur leider hatte ich gerade einen Früchtetee im Mund, als Ich deine Hex/Dez-Idee lass. Das ist nun alles auf dem LCD :bawling:
JayK - Do 16.06.05 18:59
alzaimar hat folgendes geschrieben: |
JayK hat folgendes geschrieben: | alzaimar hat folgendes geschrieben: | Also, was jetzt? Ist 37 der ASCII Code für Cursor left, oder doch für '%'? | Hmm, vllt. ist das eine ja Dezimal und das andere Hexadezimal :rofl:
|
Und Octal, Binär und Aral!
Wir schliessen einen Kompromiss.
VK-Codes sind dezimal.
ASCII ist hexadezimal.
ANSI ist octal und
Oktan ist Aral! |
Ich wusste doch, dass die Tankstellen was damit zu tun haben! :rofl:
alzaimar hat folgendes geschrieben: |
So fertig. Feierabend. :beer: Ich lass Dir die ASCII-VK-Codes. Ach was. Ich schenke Sie Dir! :party:
Nachtrag: Ich habe mich wirklich selten so köstlich amüsiert. Besonders der Schluss.
Nur leider hatte ich gerade einen Früchtetee im Mund, als Ich deine Hex/Dez-Idee lass. Das ist nun alles auf dem LCD :bawling: |
Tja, freut mich sehr, dass es dir gefallen hat. :D
Und um alles perfekt zu machen: Du hattest recht :rofl: !
Ich hab meinen, wage ich zu behaupten, kompetenten Vater gefragt und der meinte 37 für links ist der
Tastencode und kein ASCII-Code... :roll:
Und dabei hattest du mir gerade die ASCIIs geschenkt. :cry: ;) Hey, kann ich jetzt bei Borland eine volständige Windows.pas verlangen, obwohl ich PE nutzer bin? :gruebel: Wohl besser nich...
Schönen Tag noch,
JayK
Timosch - Fr 17.06.05 13:39
Irgendwie lustig, wie solche Diskussionen immer ausarten... :D :) :o :lol: 8)
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!