Guten Nachmittag liebe Community...
Draussen ist es grau bei uns in der Schweiz, und deshalb ist es mal wieder Zeit für ein bisschen Programmieren mit Delphi
Da kommt auch schon die erste Frage auf.
Wie sieht eigentlich die Datenstruktur im Speicher für ein Record aus?
Bei C ist es ja so, dass wenn man beispielsweise folgende Struktur (struct) hat:
Code:
TColixHeader = record
DestinationAddr: Word;
SourceAddr: Word;
PaketType: Byte;
PaketCounter:Byte;
PaketStatusBits:Byte;
end;
Es im Speicher wie folgt aussieht:
[2bytes][2bytes][1bytes][1byte][1byte]
Und dies auch nacheinander entsprechend dem Struct halt eben.
Ich gehe mal davon aus, das dies bei Delphi ebenso ist.
Der Hintergrund dazu:
Ich möchte selbst definierte Paketstrukturen innerhalb eines UDP Paketes im Netz versenden.
Empfangen wird dies unter anderem auch von einem C-Programm.
Und dort ist es halt besonders vorteilhaft, wenn man die empfangenen Bytes gleich in ein
Struct laden kann und dann über dieses auf die entsprechenden Daten zugreifen kann.
Dies setzt jedoch eine immer gleichbleibende Datenstruktur (auf Byteebene) voraus.
(Deshalb die frage ob die Struktur im Speicher identisch ist)
Ich würde dann eben etwas im folgenden Stil machen:
Code:
// In Delphi
...sendeUDP(MeineRecordDaten)...
//im C-Programm
...meinStruct = empfangeUDP()...
In Delphi verwende ich die
Jedi Komponenten (tIdUDPClient) zum senden.
Diese erwartet jedoch einen String.
Weiss jemand, 1) wie man an die "rohdaten" (bytes) eines Records kommt
und wie man diese dann mit dem tIdUDPClient senden kann?
Genügt die Funktion bytesToString(MeineRecordBytes) ?
Danke schonmal
Grüsse
Claudio