Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Pointer in C# (https://www.delphipraxis.net/126241-pointer-c.html)

Neutral General 21. Dez 2008 17:10

Re: Pointer in C#
 
Hi,

Habs jetzt so probiert:

Code:
[Serializable]
public struct TPlayerState
{
   public UInt16 id;
   public int x;
   public int y;
   public UInt32 color;
}

public static void RecClientData(object client)
{
   Socket csock = client as Socket;
   BinaryFormatter binf = new BinaryFormatter();
         
   byte[] buff = new byte[14]; // Größere Pakete kommen zurzeit eh nicht an, von daher hab ichs mal so fest drin.

   int len;
   while ((len = csock.Receive(buff,SocketFlags.None)) > 0)
   {      
      Stream ms = new MemoryStream();
      ms.Write(buff,0,buff.Length);
      ms.Position = 0;
   
      switch (buff[0])
      {
         case 0: Console.WriteLine("...");
            break;
         case 1: TPlayerState ps = (TPlayerState)binf.Deserialize(ms); // <---- *)
            Console.WriteLine(ps.y);
            break;
         default:break;
      }
// ....
*) Ausnahme System.Runtime.Serialization.SerializationExceptio n wurde im ausgeführten Programm ausgelöst:
Das Streamende wurde erreicht, bevor die Verarbeitung abgeschlossen wurde.

Kann mir da jemand sagen was ich falsch mache? Versenden tu ich das ganze so:

Delphi-Quellcode:
type
  TPlayerState = packed record
    id: Word; // 1
    x,y: Integer;
    color: TColor;
  end;

var data: TPlayerState;
begin
  data.id := 1;
  data.x := 20;
  data.y := 40;
  data.color := clred;
  Client.Send(@data,SizeOf(TPlayerState));
end;
Gruß
Neutral General

Apollonius 21. Dez 2008 17:12

Re: Pointer in C#
 
Du musst natürlich auch zum Serialisieren den BinaryFormatter verwenden.

Neutral General 21. Dez 2008 17:16

Re: Pointer in C#
 
Zitat:

Zitat von Apollonius
Du musst natürlich auch zum Serialisieren den BinaryFormatter verwenden.

Ja wie soll ich das denn machen? :roll:

Ich versende doch die Daten von einem Delphi Win32 Programm aus.

Da hab ich keinen Binary-Formatter....

Apollonius 21. Dez 2008 18:09

Re: Pointer in C#
 
Dann musst du entweder den unmanaged Weg gehen oder den Stream manuell parsen. Letzteres ist doch wirklich kein Problem.

Phoenix 21. Dez 2008 21:03

Re: Pointer in C#
 
Schau Dir das hier mal an. Da ist ein Artikel für einen CustomFormatter verlinkt. Könnte das sein, was Du brauchst.


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:48 Uhr.
Seite 3 von 3     123   

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