AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

struct als TBytes nach record?

Ein Thema von Piberg · begonnen am 30. Okt 2007 · letzter Beitrag vom 31. Okt 2007
 
Piberg

Registriert seit: 6. Jun 2006
6 Beiträge
 
Delphi 2006 Architect
 
#1

struct als TBytes nach record?

  Alt 30. Okt 2007, 17:16
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
  Mit Zitat antworten Zitat
 

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:42 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz