Allgemeine Fragen zur PROFAN Programmierung
Views (Heute): 240851 (2287)
  Suchen
 Zurück zur Übersicht
 AutorThema: Input_Record
Stefan Schnell
Datum:25.09.02 14:58 Antwortenals Email verschicken (mail@stschnell.de) 


Hallo Community,
versuche gerade Eingaben über die Console einzulesen, und habe nun folgende Frage dazu:
In der Structs Header-Datei finde ich dazu folgende Definition:
INPUT_RECORD = KeyEvent#(4),MouseEvent#(4),WindowBufferSizeEvent#(4),MenuEvent&,FocusEvent&;
Die Dokumentation des Win32API sieht etwas anders aus:
typedef struct INPUT_RECORD { // ir
WORD EventType;
union {
KEY_EVENT_RECORD KeyEvent;
MOUSE_EVENT_RECORD MouseEvent;
WINDOW_BUFFER_SIZE_RECORD WindowBufferSizeEvent;
MENU_EVENT_RECORD MenuEvent;
FOCUS_EVENT_RECORD FocusEvent;
} Event;
} INPUT_RECORD;
Die Definition aus FreePascal sagt dazu folgendes:
INPUT_RECORD = record
EventType: Word;
Reserved: Word;
Event : record case longint of
0 : ( KeyEvent : KEY_EVENT_RECORD );
1 : ( MouseEvent : MOUSE_EVENT_RECORD );
2 : ( WindowBufferSizeEvent : WINDOW_BUFFER_SIZE_RECORD );
3 : ( MenuEvent : MENU_EVENT_RECORD );
4 : ( FocusEvent : FOCUS_EVENT_RECORD );
end;
Wer kann mir helfen, die Definition in der Structs.ph zu korrigieren?
Danke und Tschüss
Stefan



Uwe ''Pascal'' Niemeier
Datum:26.09.02 21:08 Antwortenals Email verschicken (Pascalxd@owl-online.de) 


Hallo Stefan!

Soweit ich verstanden habe, hat die Struktur keinen festen Aufbau; vielmehr sind die
vermeindlichen Parameter selbst Strukturen verschiedener Grösse, von denen jeweils eine
gültig ist.
Wie die INPUT_RECORD-Struktur nach EventType aussieht, hängt also vom
Inhalt von EventType ab.
Das Wort "Union" bedeutet in diesem Zusamenhang also quasi "eine von diesen"

Am besten verzichtest du auf eine Strukturierung, dimensionierst so, dass
KEY_EVENT_RECORD als grösste "Unterstruktur" Platz hat (laut APIFellow 16 Bytes,
ungetestet) und verwendest die allgemeinen Befehle und Funktionen für Bereichsvariablen
in Abhängigkeit von EventType.

HTH
Pascal


Stefan Schnell
Datum: 27.09.02 01:36 Antwortenals Email verschicken (mail@stschnell.de) 


Hallo Uwe,
auf die Idee muss man auch erstmal kommen, dass es sich hier um eine dynamische Struktur handelt, die vom Ergebnistyp abhängig ist. Vielen Dank für Deinen Hinweis, werde jetzt in die entsprechende Richtung weiter testen.
Tschüss
Stefan



 Zurück zur Übersicht