求C#程序转换成delphi程序(关于com组件跟函数指针)
求C#程序转换成delphi程序(关于com组件和函数指针)
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,"上行短信包");
}
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,"上行短信包");
}