如题.
解决方案 »
- C#调用Dephi的DLL尝试读取或写入受保护的内存。这通常指示其他内存已损坏。
- 学生管理系统 要C#和SQL 要学什么啊?
- 这个代码怎么改才能编绎?
- C#合并Excel单元格
- 如果DataSet、DataTable类型对象当做函数参数或者返回值,这样函数之间传递的是拷贝还是引用?
- 求教一个关于TreeView存放ID的问题?
- FTP传输文件
- 请教大家,该表格存数据库的话,数据库该如何设计
- 急!为什么我用C#打开一个excel文件出现Server execution failed的错误(安装的是office2000)
- 从一个字符串中选出所有可能的字符组合,怎么做?
- 求助:打印分页问题!
- 高手的博文看不懂,土土的问一下
[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)]
public struct PackHead
{
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
public byte[] IdcFlg;
}
PackHead.IdcFlg = Encoding.UTF8.GetBytes("XXX");
这样就有问题.我系统这个机构的长度,不能因为赋值而改变.
2.要赋值的时候使用Array.Copy方法。
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
这里只是告诉托管内存管理器,和非托管互操作时,这里的长度。并不限制也不替你分配。对IdcFlg的操作不要用IdcFlg = 另一个数组而是
Array.Copy(...)