当前位置:编程学习 > C#/ASP.NET >>

.net调用delphi组件 指针参数

delphi中:
函数定义:
function SeekCard(var CardType: Byte; CardSN: Pointer; var BufSize: Integer): Boolean; stdcall; external ERTransDLL;

函数调用:
var
  sn: array[0..16] of Char;
  nLen: Integer;
  aCardType: Byte;
begin
  if SeekCard(aCardType, @sn, nLen) then
    memo1.Lines.Add('寻卡成功 ' + sn+ ' 卡类型 '+ intToStr(aCardType))
  else memo1.Lines.Add('寻卡失败,错误代码 '+IntToStr(GetLastTradeError));
end;




转换到.net中:
        [DllImport(ERTransDLL, CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Winapi)]
        public static extern bool SeekCard(ref byte CardType, object CardSN, ref int BufSize);


        char[] sn = new char[16 + 1];
        static int nLen = 0;
        static byte aCardType = 0;
        private void btnConnectReader_Click(object sender, EventArgs e)
        {
            if (SeekCard(ref aCardType,sn, ref nLen))
            {
                tssMessage.Text = "寻卡成功 " + sn + " 卡类型 " + (aCardType).ToString();
            }


异常:{"尝试读取或写入受保护的内存。这通常指示其他内存已损坏。"}

会不是delphi中的 Pointer转换成object的问题,我也试过用intptr的,会出现栈溢出异常 .NET Delphi 指针 内存 异常
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,