C# WINFORM调用DELPHI的DLL

BeABug 2012-02-18 09:43:24
接口说明如下:
认证函数:
function Sed_Auth (SendData:String; var ErrMsg: String):Word;
功能:对客户端进行认证。只有认证通过了才能进行业务处理。建议在系统启动时进行认证。
参数:
SendData格式如下:
sSvrIP 前置服务器IP地址
sSvrPort 前置服务器端口号
sHospCode VarChar(5) 医疗机构ID
sPassWord VarChar(8) 医疗机构密码
  sUserName VarChar(10) 操作员
返回值:1成功,0失败

我的调用代码如下:
[DllImport("sed_siif.dll", CharSet = CharSet.Ansi, PreserveSig = false, CallingConvention = CallingConvention.StdCall)]
public static extern int Sed_Auth(string SendData, ref StringBuilder ErrMsg);

private void Form1_Load(object sender, EventArgs e)
{
StringBuilder sb = new StringBuilder("172.16.33.3@23432@20000@20000@999");
StringBuilder msg = new StringBuilder(1024);
MessageBox.Show(Sed_Auth(sb.ToString(), ref msg).ToString());
MessageBox.Show(msg.ToString());
}

这个是我写的测试例子,
MessageBox.Show(Sed_Auth(sb.ToString(), ref msg).ToString());
这行代码返回值为“0”,可以报出来,但是如果字符串正确的话应该是“1”
另外:MessageBox.Show(msg.ToString());
这行代码中的msg没有任何值。

...全文
56 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
EnForGrass 2012-02-18
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 chinajiyong 的回复:]

调用dll注意参数类型的转换
另外
这行代码中的msg没有任何值。应该这样
StringBuilder msg = new StringBuilder();
msg.Append(1024);
[/Quote]
既然msg值没传对,那结果就不对了啥
EnForGrass 2012-02-18
  • 打赏
  • 举报
回复
调用dll注意参数类型的转换
另外
这行代码中的msg没有任何值。应该这样
StringBuilder msg = new StringBuilder();
msg.Append(1024);
色拉油 2012-02-18
  • 打赏
  • 举报
回复
你的dll注册了吗

110,566

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧