Hallo Forum!
Nachdem ich einige Threads durchgeschaut habe, konnte ich diesen C++
struct
Code:
typedef struct {
short enable ;
short side ;
short angle ;
short x ;
short y ;
} pos_t ;
typedef struct {
char name[16] ;
short masse;
} obj_t ;
/* und endlich */
typedef struct {
char pmode ; /* nimmt Werte eines enum auf z.B. (pm_null, pm_1, pm_2) */
obj_t figure[2] ;
pos_t pos[3] ;
short time ;
} info_t ;
in folgende Delphi-Typen überführen: (Hoffentlich ist es richtig. Bin für jede Bemerkung dankbar.)
Delphi-Quellcode:
type pos_t = packed record
enable,
side,
angle,
x, y : Smallint ;
end;
type obj_t = packed record
name : string[16] ; // oder : array [0..15] of char ???
masse: Smallint ;
end;
// und endlich
type info_t = packed record
pmode : (pm_null, pm_1, pm_2) ;
figure: array [0..1] of obj_t ;
pos : array [0..2] of pos_t ;
time : Smallint ;
end;
Jetzt zum eigentlichen Problem. Und zwar konnecte ich von Delphi aus zu einem Linux-Programm, das mir
das o.g.
struct info_t über UDP sendet.
Dieses kann ich dann mit dem UDPRead-Ereignis von Indys idUDPServer empfangen. Die Daten sind dann im
Parameter AData vom Typ TBytes gespeichert.
Ach ja, ich muss noch erwähnen, dass es unterschiedliche structs verschickt werden. Das da Oben, war nur
ein kurzes Beispiel. Was sie nur gemeinsam haben ist
pmode, anhand dessen ich unterscheiden kann,
was das nun fürn struct-Typ angekommen ist.
Und nun meine Frage:
Wie kann ich die empfangenen Bytes von AData nach mein
record speichern? Ich muss ja auch zuerst
an
pmode ran, um feststellen zu können, ob ich in mein
info_t record oder ein anders
nehme.
Und bei der Gelegenheit noch ne Frage zur Typenwandlung:
Muss in diesem Fall wirklich ein
packed record sein?
Danke im Voraus