Autor |
Beitrag |
lukas.mika
Hält's aus hier
Beiträge: 4
|
Verfasst: Fr 27.05.05 19:13
Moin Leute...
Ich beschäftige mich gerade mit einem Programm, welches verschiedene Tasteneingaben simuliert...
Delphi-Quelltext 1: 2: 3: 4: 5:
| begin taste:='VK_'+A[i]; keybd_event(taste, 0, 0, 0); keybd_event(taste, 0, KEYEVENTF_KEYUP, 0,); end; |
Kann ja so nicht funktionieren, weil ich nen String vorliegen hab und Delphi was aus der Klasse Byte in Form von VK_A oder ähnlichem erwartet...
Jetzt hab ich nur das Problem: Wie mache ich Delphi klar, dass der String genau das gleiche darstellt? hab schon an so Sachen wie taste as byte und so gedacht... Funktioniert aber nicht. Gibt es nicht so nen Befehl wie StrToInt nur halt auf Bytes bezogen?
Wäre echt nett, wenn mir jemand helfen würde...
Soweit,
euer Lukas
|
|
retnyg
      
Beiträge: 2754
SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
|
Verfasst: Fr 27.05.05 20:03
das sollte so gehen:
Delphi-Quelltext 1: 2: 3: 4: 5:
| begin taste:=byte(A[i]); keybd_event(taste, 0, 0, 0); keybd_event(taste, 0, KEYEVENTF_KEYUP, 0,); end; |
_________________ es gibt leute, die sind genetisch nicht zum programmieren geschaffen.
in der regel haben diese leute die regel...
|
|
lukas.mika 
Hält's aus hier
Beiträge: 4
|
Verfasst: Fr 27.05.05 20:45
Titel: Ausprobiert, kein Ergebnis
Ähm, nein, da A[i] den Buchstaben der Taste darstellt. Der Byte-Befehl lautet aber "VK_B" oder ähnliches...
Das wäre ja also
taste:=byte('VK_'+A[i])
und da liefert mir Delphi die Fehlermeldung "Ungültige Typumwandlung"...
Funktioniert also immernoch nicht.
|
|
alzaimar
      
Beiträge: 2889
Erhaltene Danke: 13
W2000, XP
D6E, BDS2006A, DevExpress
|
Verfasst: Fr 27.05.05 20:48
Is ja auch logisch, das das nicht geht... Denn VK_0 ist ein String. Die 'VK' stehen für Virtual Key und soweit ich mich erinnere (steht aber in der Hilfe) ist VK_x = ord (x)... Also VK_0 = Ord('0') = 48, VK_A = Ord('A') = 65 etc. Lies mal genau nach.
|
|
retnyg
      
Beiträge: 2754
SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
|
Verfasst: Fr 27.05.05 20:51
Titel: Re: Ausprobiert, kein Ergebnis
lukas.mika hat folgendes geschrieben: | Ähm, nein, da A[i] den Buchstaben der Taste darstellt. Der Byte-Befehl lautet aber "VK_B" oder ähnliches...
Das wäre ja also
taste:=byte('VK_'+A[i])
und da liefert mir Delphi die Fehlermeldung "Ungültige Typumwandlung"...
Funktioniert also immernoch nicht. |
probier den code (meinen) doch einfach aus, er funktioniert 
_________________ es gibt leute, die sind genetisch nicht zum programmieren geschaffen.
in der regel haben diese leute die regel...
|
|
lukas.mika 
Hält's aus hier
Beiträge: 4
|
Verfasst: Fr 27.05.05 20:54
Titel: Erläuterung
genau da liegt ja mein Problem... das muss über VK_P laufen, da ich das anhand einer Schleife durchlaufen lasse. Ohne die Schleife funktioniert es, aber wer will schon für jedes neue Wort für jeden Buchstaben 2 neue Prozeduren schreiben? Erst recht, wenn es so ca. 20 sind?
retnyg hat folgendes geschrieben: |
probier den code (meinen) doch einfach aus, er funktioniert  |
Hab ich, funktioniert nicht mit der Typumwandlung...
Moderiert von raziel: Beiträge zusammengefasst.
|
|
retnyg
      
Beiträge: 2754
SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
|
Verfasst: Fr 27.05.05 21:02
pass mal auf:
s:='aBc';
s[1] = 'a' oder 97 als byte, ist das selbe wie VK_A. VK_A ist nur ne konstante, die für 97 steht.
von s[1] auf eben diese 97 kommst du mit ord(s[1]) oder byte(s[1])
wenn taste also vom typ byte ist, funktioniert auch der code den ich vorher gepostet habe.
wenn du das aber als etwas anderes deklariert hast, ist der fehler vorprogrammiert.
_________________ 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: Fr 27.05.05 21:04
Wenn a[i] = 'P' (also ein Character), dann ist Ord(a[i]) identisch mit dem Wert von VK_P. Schlage in der Hilfe nach 'Virtual Keys'. In der Hilfe zur Windows-SDK. Oder suche in Windows.pas nach VK_P oder probiere es einfach.
retnyg hat recht. Nur ist 'ord' die offizielle amtlich genehmigte Funktion, um Chars in Bytes umzuwandeln 
|
|
lukas.mika 
Hält's aus hier
Beiträge: 4
|
Verfasst: Fr 27.05.05 21:22
Titel: Prog läuft
Das Problem lag jetzt daran, dass A[i] nen Array of string war. wollte nämlich, dass der Computer auch bei ; nen VK_RETURN schreibt und ähnliches.
Hab aber jetzt nen paar strukturelle Änderungen vorgenommen (A als array of Char) und jetzt läuft's...
Danke allen Beteiligten *fg*
Für alle, die das Ding auch noch ausprobieren wollen, weil sie z.B. gerade einen Chatbot programmieren:
im Befehl Ord(x) muss x immer ein upcase(Buchstabe) sein... Bei kleinen Buchstaben erhaltet ihr irgendwelchen Murks. Daran hab ich mir auch ne zeitlang echt die Zähne ausgebissen
Moderiert von raziel: Beiträge zusammengefasst.
|
|
alzaimar
      
Beiträge: 2889
Erhaltene Danke: 13
W2000, XP
D6E, BDS2006A, DevExpress
|
Verfasst: So 29.05.05 21:53
Und Kleinbuchstaben? Wie hast Du das hinbekommen?
|
|
Malo05
      
Beiträge: 34
Windows XP Professional SP2
D5 Prof (SSL), D7 Pers, D2005 Pers
|
Verfasst: So 29.05.05 21:59
retnyg hat folgendes geschrieben: | pass mal auf:
s:='aBc';
s[1] = 'a' oder 97 als byte, ist das selbe wie VK_A. VK_A ist nur ne konstante, die für 97 steht. |
Und welches VK_ ist 'A'?
|
|
retnyg
      
Beiträge: 2754
SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
|
Verfasst: So 29.05.05 22:11
gibts nicht. für nähere infos in windows.pas nachlesen.
_________________ es gibt leute, die sind genetisch nicht zum programmieren geschaffen.
in der regel haben diese leute die regel...
|
|
Malo05
      
Beiträge: 34
Windows XP Professional SP2
D5 Prof (SSL), D7 Pers, D2005 Pers
|
Verfasst: So 29.05.05 22:23
retnyg hat folgendes geschrieben: | gibts nicht. für nähere infos in windows.pas nachlesen. |
Also wenn, dann ist es wohl anders herum. Laut Windows.pas:
Zitat: | { VK_A thru VK_Z are the same as ASCII 'A' thru 'Z' ($41 - $5A) } |
Also ist VK_A = 'A' und nicht 'a'.
|
|
retnyg
      
Beiträge: 2754
SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
|
Verfasst: So 29.05.05 23:16
ich weiss, es ging aber darum dem fragesteller das prinzip klarzumachen.
falls du klugscheissen willst, halte dich von mir fern 
_________________ es gibt leute, die sind genetisch nicht zum programmieren geschaffen.
in der regel haben diese leute die regel...
|
|
|