读书人

关于结构赋值的有关问题

发布时间: 2012-04-04 16:38:51 作者: rapoo

关于结构赋值的问题,高手进
[StructLayout(LayoutKind.Sequential)]
struct TGlobalData
{
public int AppHandle;
public int Login;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
public char[] Master;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
}
这是我定义的一个结构。往里面赋值后,给Dellp写的dll调用,就会报数组越界的问题。请问什么问题;我这样赋值的:
TGlobalData gdata = new TGlobalData();
string strMaster = "master ";
gdata.Master = strMaster.ToCharArray();




[解决办法]
换成byte[]看看
其他dll里的char估计是1个自己,而C#中的char是两个字节
public byte[] Master;
[StructLayout(LayoutKind.Sequential)]
struct TGlobalData
{
public int AppHandle;
public int Login;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
public byte[] Master;
}

private void button1_Click(object sender, EventArgs e)
{
TGlobalData gdata = new TGlobalData();
string strMaster = "master ";
gdata.Master = Encoding.Default.GetBytes(strMaster);
}

[解决办法]
Dellp?是啥?DELL笔记本P?
原始声明是怎样的?
[解决办法]
还是没有看到DLL函数接口原始的声明
function fname(param: TGlobalData): Boolean; ??

还有C#中的函数声明??

Delphi的默认函数参数调用方式是pascal
C#里是stdcall

有没有Delphi里的调用例子?
[解决办法]
up

读书人网 >C#

热点推荐