用一个RefComm类
public class RefComm 
{ [DllImport("TerAccDll.dll", EntryPoint="GetTerTime ",CharSet=CharSet.Auto,CallingConvention=CallingConvention.StdCall)] public static extern int GetTerTime (int a,int b);  } 
调用一个动态链接库TerAccDll.dll.动态链接库的GetTerTime函数一个取时间函数.其参数结构为
 function GetTerTime (
TerNo:integer;
var y,Mon,d,h,min,s,w:integer;
Port:integer =1):integer;
参数
TerNo 为一个输入参数。
Y,Mon,d,h,min,s,w 为返回日期和时间,分别为年,月,日,时,分,秒,星期。其中星期天为0,星期一为1,依此类推。
Port   为一个输入参数。
         如果函数调用成功,返回值为1。请问调用GetTerTime这个函数时传入TerNo,Port两个参数之后 怎么取Y,Mon,d,h,min,s,w等7个返回值啊?

解决方案 »

  1.   

    to 请问调用GetTerTime这个函数时传入TerNo,Port两个参数之后 怎么取Y,Mon,d,h,min,s,w等7个返回值啊?out参数,你应该如下去定义[DllImport(...)]
    public static extern int GetTerTime (int TerNo,ref int y, ref int Mon, ref int h, ref int min, ref int s, ref int w, int Port);
      

  2.   

    恕小弟茅塞开一半,把加载动态链接库的类改成兄所言
    [DllImport(...)]
    public static extern int GetTerTime (int TerNo,ref int y, ref int Mon, ref int h, ref int min, ref int s, ref int w, int Port);
    后,怎么在调用GetTerTime 的时候用OUT参数取出Y,Mon,d,h,min,s,w等7个返回值啊?
    没受过系统教育 呵呵
      

  3.   

    yun~你调用的时候,需要定义这么多变量,例如
    int TerNo,y, Mon, h, min, s, w, Port;
    //init "TerNo" & "Port"
    GetTerTime( TerNo, ref y, ref Mon, ref h, ref min, ref s, ref w, Port );
    等调用完了,然后读取y这些变量就自然获得,它们属于out参数。
      

  4.   

    调用的时候变量我都初始化了
    int TerNo=1,y=1,Mon=1,h=1,min=1,s=1,w=1,Port=1;
    GetTerTime( TerNo, ref y, ref Mon, ref h, ref min, ref s, ref w, Port );
    之后怎么y这些变量还是1啊  正确的数据应该是06...
      

  5.   

    没道理,var定义的应该是引用类型
      

  6.   

    var 是Delphi/pascal里的REF我郁闷.....
      

  7.   

    加上Out标示试试
    例如:
    [DllImport(...)]
    public static extern int GetTerTime (int TerNo,ref int y, ref int Mon, ref int h, ref int min, ref int s, ref int w, int Port);把上面的ref int改为[Out] ref int不过这也是碰碰运气,按说ref就足够了。