首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

关于结构赋值的有关问题

2012-04-04 
关于结构赋值的问题,高手进[StructLayout(LayoutKind.Sequential)]structTGlobalData{publicintAppHandle

关于结构赋值的问题,高手进
[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

热点排行