Einzelnen Beitrag anzeigen

Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: struct als TBytes nach record?

  Alt 30. Okt 2007, 17:32
Du solltest keine Shortstrings verwenden, da in diesen noch ein Längenbyte ist. Also, wie du selbst vorgeschlagen hast, besser ein array[0..15] of char nehmen. Wenn ich mit den Indys Records empfangen habe, habe ich das immer so gemacht: Erstmal TBytes empfangen. TBytes ist ein dynamisches Array, also ein Zeiger auf eine Byte-Folge. Das ganze habe ich in den Zeigertyp des Records gecastet und gerne auch mal mit with umschlossen, also so:
Delphi-Quellcode:
var rec: TMeinRecord; Bytes: TBytes;
begin
IdTCPClient1.ReadBytes(Bytes, SizeOf(TMeinRecord));
rec:=PMeinRecord(Bytes)^;
//oder auch
with PMeinRecord(Bytes)^ do
  begin
  end;
end;
Das ganze ist ungetestet, es kann sein, dass ich die Syntax nicht mehr ganz im Kopf habe.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat