en C++ se realiza Es así:Cómo asignar un byte [] para un registro
tPacket * packet = (tPacket *)data; //data is byte[] array; tPacket is a structure
En C#:
tPacket t = new tPacket();
GCHandle pin = GCHandle.Alloc(data, GCHandleType.Pinned);
t = (tPacket)Marshal.PtrToStructure(pin.AddrOfPinnedObject(), typeof(tPacket));
pin.free();
de datos es una matriz de bytes utilizado como un búfer de recepción después de un paquete se recibe a través de TCP. Ese código pone los datos en una instancia de tPacket (una estructura) para que pueda acceder a la estructura más tarde.
¿Cómo se hace en Delphi?
Espero que su C++ tPacket sea un POD (sin métodos virtuales) y no contenga ningún puntero o refrences. Y espero que su C# tPacket sea un tipo de valor que solo consta de tipos de valores (que solo consta de tipos de valores, ... por lo que no hay ningún tipo de referencia en su gráfico de objetos). – mmmmmmmm