求C#程序转换成delphi程序(关于com组件和函数指针)

zhengkaining 2012-01-10 02:51:33
static CallBack ca = new CallBack(Form1.CallBackProc); //得到函数指针
uint pCallBack = (uint)(Marshal.GetFunctionPointerForDelegate(ca).ToInt32());

private void button3_Click(object sender, EventArgs e)
{
FullTunnelServiceControl ctr1 = new FullTunnelServiceControl();
object hr = ctr1.StartRecv_User(pCallBack);

if (hr.ToString() == "0"){
textBox1.Text = "接收成功";
}
else {
textBox1.Text = hr.ToString();
}
}

public static void CallBackProc(String BS_flag, String svalue1, String svalue2, String svalue3, String svalue4,
String svalue5, String svalue6, String svalue7, String svalue8)
{
//MessageBox.Show("进入回调函数里面");
String msgtemp = "";

if ( BS_flag.CompareTo("4") == 0 ){
msgtemp += " [业务响应包] SequenceID:"+ svalue1+" MessID:"+svalue2+" STATUS:"+svalue3;
MessageBox.Show(msgtemp,"业务响应包");
}
else if (BS_flag.CompareTo("5") == 0){
msgtemp += "[上行短信包] SequenceID:" + svalue1 +" 发送号码:" + svalue2 +" 接收号码:" + svalue3+
" 接收时间:" + svalue4 + " 短信内容:" +svalue5;
MessageBox.Show(msgtemp,"上行短信包");
}
else if (BS_flag.CompareTo("7") == 0){
msgtemp += "[短信回执包] SequenceID:" + svalue1 + " MessID:" + svalue2 + " 接收号码:"+ svalue3
+ " 发送号码:" + svalue4 + " 提交时间:"+ svalue5 + " 下发时间:" + svalue6
+" 短信状态:" + svalue7 + " 错误代码:" + svalue8;
MessageBox.Show(msgtemp, "短信回执包");
}
}
...全文
223 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
nm_wyh 2012-02-09
  • 打赏
  • 举报
回复
搜索DELPHI的回调函数或函数指针,都可以!
bdmh 2012-02-08
  • 打赏
  • 举报
回复
delphi要简单,将CallBackProc定义个类,直接当参数传递就可

去搜 delphi 回调函数
zhengkaining 2012-02-08
  • 打赏
  • 举报
回复
可以支付费用
zhengkaining 2012-02-06
  • 打赏
  • 举报
回复
没人回答,我要提前一些

1,184

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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