Hallo!
Ich möchte folgenden Delphi - Code in C# umsetzen:
<PRE>
Var
EA_Set : packed Record
Send_Sequence,
Rec_Sequence,
Struct_Type,
l : Word;
Set_Bits : Word;
Value : Word;
End;
Var
pEA_Set: Pointer;
begin
pEA_Set := @EA_Set;
If FActive Then Begin {Server is online}
with EA_Set Do Begin
Set_Bits := $FFFF;
Value := Data;
End;
FClient.Send (pEA_Set,EA_Set.l);
PEA_Set := @EA_Read_Cmd;
Client.Send (pEA_Set,EA_Read_Cmd.l);
End;
</PRE>
Der Record wird damit rein binär Byte für Byte über die Client (Socket) Verbindung geschickt.
In C# geht so etwas nicht, deshalb habe ich folgendes versucht - funkt aber nicht:
<PRE>
[Serializable]
struct EA_Set
{
public ushort
Send_Sequence,
Rec_Sequence,
Struct_Type,
l,
Set_Bits,
Value;
}
private void button1_Click(object sender, System.EventArgs e)
{
EA_Set EA;
EA.Send_Sequence = 0;
EA.Rec_Sequence = 0;
EA.Struct_Type = 0;
EA.Set_Bits = 0xFFFF;
EA.Value = 0x55;
EA.l = 12;
byte [] buf = new byte [200000];
MemoryStream bw = new MemoryStream (buf,0,2000,true,true);
BinaryFormatter frm = new BinaryFormatter ();
frm.Serialize(bw,EA);
tcpClient1.Socket.WriteBytes (buf,true);
}
}
</PRE>
Thx for help!!
Manfred
Ich möchte folgenden Delphi - Code in C# umsetzen:
<PRE>
Var
EA_Set : packed Record
Send_Sequence,
Rec_Sequence,
Struct_Type,
l : Word;
Set_Bits : Word;
Value : Word;
End;
Var
pEA_Set: Pointer;
begin
pEA_Set := @EA_Set;
If FActive Then Begin {Server is online}
with EA_Set Do Begin
Set_Bits := $FFFF;
Value := Data;
End;
FClient.Send (pEA_Set,EA_Set.l);
PEA_Set := @EA_Read_Cmd;
Client.Send (pEA_Set,EA_Read_Cmd.l);
End;
</PRE>
Der Record wird damit rein binär Byte für Byte über die Client (Socket) Verbindung geschickt.
In C# geht so etwas nicht, deshalb habe ich folgendes versucht - funkt aber nicht:
<PRE>
[Serializable]
struct EA_Set
{
public ushort
Send_Sequence,
Rec_Sequence,
Struct_Type,
l,
Set_Bits,
Value;
}
private void button1_Click(object sender, System.EventArgs e)
{
EA_Set EA;
EA.Send_Sequence = 0;
EA.Rec_Sequence = 0;
EA.Struct_Type = 0;
EA.Set_Bits = 0xFFFF;
EA.Value = 0x55;
EA.l = 12;
byte [] buf = new byte [200000];
MemoryStream bw = new MemoryStream (buf,0,2000,true,true);
BinaryFormatter frm = new BinaryFormatter ();
frm.Serialize(bw,EA);
tcpClient1.Socket.WriteBytes (buf,true);
}
}
</PRE>
Thx for help!!
Manfred
Comment