您的位置:程序门 -> .net技术 -> c#



关于结构赋值的问题,高手进


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


关于结构赋值的问题,高手进[已结贴,结贴人:ann77]
发表于:2007-02-08 15:32:00 楼主
[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();


发表于:2007-02-08 15:49:451楼 得分:6
换成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);
}
发表于:2007-02-08 16:18:262楼 得分:0
不行,还是运行出错
发表于:2007-02-08 16:33:163楼 得分:2
dellp?是啥?dell笔记本p?
原始声明是怎样的?
发表于:2007-02-08 16:43:384楼 得分:0
delphi。就是使用的pascal语言。
这个结构必须让他能接受,在那边定义如下:
    tglobaldata   =   record
                apphandle               :   thandle;
                login                       :   integer;
                master                     :   array   [0..31]   of   char;
                username                 :   array   [0..127]   of   char;
        end;
发表于:2007-02-08 16:46:255楼 得分:0
该回复于2007-12-21 20:21:35被管理员或版主删除
发表于:2007-02-08 17:01:546楼 得分:8
还是没有看到dll函数接口原始的声明
function   fname(param:   tglobaldata):   boolean;   ??

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

delphi的默认函数参数调用方式是pascal
c#里是stdcall

有没有delphi里的调用例子?
发表于:2007-02-08 17:17:527楼 得分:0
private   delegate   int   dofunc(ref   tglobaldata   pfuncinfo);
这是接口函数
我想还是赋值语句出错了。用了layoutkind.sequential
结构里面的的数组应该是有空间了阿。可是我一赋值。它的就指向别处了呢
发表于:2007-02-10 12:16:328楼 得分:4
up


快速检索

最新资讯
热门点击