![]() |
Daten reinpacken in Tbytes...
wie kann ich meine struktur
Delphi-Quellcode:
in eine Struktur vom Typ Tbytes reinpacken...!?TUDPPacket = record case ID : integer of $00 : (ClientReceive00 : TSearchFile); $11 : (ClientReceive11 : TSearchFile); ****************************************** TSearchFile = record SFilename : string[100]; SMD5 : string[50]; SArtist : string[50]; STitle : string[50]; STyp : string[4]; SSize : String[10]; S_IP : string[16]; end;
Delphi-Quellcode:
TBytes = array of Byte;
|
Re: Daten reinpacken in Tbytes...
Mit SizeOf ermittelst du die Größe deiner Records. Mit SetLength setzt du die Größe deines Array's. Und mit Move kopierst du die Daten.
|
Re: Daten reinpacken in Tbytes...
Köntest du eventuell ein beispiel zeigen...!?
|
Re: Daten reinpacken in Tbytes...
Delphi-Quellcode:
type
TMyRecord = packed record ... end;
Delphi-Quellcode:
type
TBytes = array of Byte;
Delphi-Quellcode:
var
MyRec: TMyRecord; MyArry: TBytes; begin SetLength(MyArry, SizeOf(TMyRecord)); Move(MyRec, MyArry[0], SizeOf(TMyRecord)); end; |
Re: Daten reinpacken in Tbytes...
ich habe es auf die Weise gemacht...
Delphi-Quellcode:
Leider beim Empfang sind die Daten nicht mehr wieder erkennbar
procedure TForm1.UDPSendMyRecord(ip : string; SomeRecord: TUDPPacket);
var dummy : Tbytes; begin setlength(dummy, sizeof(SomeRecord)); move(SomeRecord, dummy[0], sizeof(someRecord)); form1.IdUDPClient1.Host := ip; form1.IdUDPClient1.SendBuffer(dummy); end; sie werden folgendermaßen "Entpackt
Delphi-Quellcode:
Liegt es vieleicht an der Methode wie ich die Daten "entpacke"......!?
var
paketik : TUDPPacket; begin move(Adata, paketik, sizeof(adata)); //Wenn man hier den wert von paketik untersucht dann erhält er nicht die gewünschten daten |
Re: Daten reinpacken in Tbytes...
Kann es sein, dass du den Zeiger verschickst? Die Adresse ist im Adressraum des anderen Prozesses natürlich nicht mehr gültig.
|
Re: Daten reinpacken in Tbytes...
Auch für dieses problem würden sich serialisierbare objekte anbieten. Records sind version-anfällig und blöde in der handhabung. ->
![]() |
Re: Daten reinpacken in Tbytes...
Besteht denn eine effiziente Möglichkeit, ein Record meines typs (sehe oben) per UDP zu verschicken (indy 10, Es ist im prinzip ein andreres Thema..:) )
|
Re: Daten reinpacken in Tbytes...
Warum willst du das überhaupt in ein Array kopieren. Ist doch unnötig...
Delphi-Quellcode:
..oder so. und auf der anderen seite genauso wieder rein. Allerdings kenne ich das interface auch nicht.
form1.IdUDPClient1.SendBuffer(SomeRecord, sizeOf(SomeRecord));
:) |
Re: Daten reinpacken in Tbytes...
den müsstest den String mit angabe der Länge + Inhalt des Strings verschicken. Das heißt du müsstest bevor du was verschicken kannst die teile des records erstmal in einen buffer kopieren und dann kannst du den buffer verschicken.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:37 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