private unsafe void button1_Click(object sender, System.EventArgs e)
{
Test_Struct data = new Test_Struct();
byte[] bt;
string strV = "Hello, this is a test";
//bt = strV.ToCharArray();
bt = Encoding.ASCII.GetBytes(strV);
int l=bt.Length;
data.tel_id = 99887;
data.test_data = 99999;
data.Telegram=new byte[l];
bt.CopyTo(data.Telegram,0);
//System.Runtime.InteropServices.Marshal.Copy(bt, 0, data.Telegram, bt.Length);
///Buffer.BlockCopy(bt, 0, data.Telegram, 0, bt.Length);
//data.Telegram = strV;
//ip = new IntPtr((void *)data.Telegram);
//System.Runtime.InteropServices.Marshal.Copy(bt,0,ip,bt.Length);
//MessageBox.Show(data.Telegram[0].ToString());
fixed(byte *p = data.Telegram)
{
//p = (byte *)data.Telegram;
try
{
stlc.AddToHead(ref p[0], l,1);
}
catch (Exception et)
{
MessageBox.Show(et.Message);
}
}
strV = string.Format("After add data. total {0} telegrams in list", stlc.Size);
MessageBox.Show(strV);
}
你给我的写入文件代码中有几个问题,不能运行。
最主要的是:
fixed(byte * pp=data.Telegram)
提示:错误 14 不能使用 fixed 语句来获取已固定的表达式的地址
由于我一直不知道什么叫做已固定的表达式,实在不知道如何改。
fixed(byte * pp=data) 这样子也不行
所以,即使我想要在真正的报文前面加入两个id号到时候截断字符串也无法成功。