调用COM组件里的回调函数问题,invalid pointer operation,内存错误(100)

  • 主题发起人 主题发起人 jimmypeng
  • 开始时间 开始时间
J

jimmypeng

Unregistered / Unconfirmed
GUEST, unregistred user!
大家好!: 在开发一个通信程序时,用到别人公司做的一个COM组件,需要调用组件里的回调函数,现在已经能正常的调用,但运行完回调函数后,系统便提示"invalid pointer operation"错误,导致程序运行不下去. delphi源代码如下:uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, OleServer, FULLTUNNELCONTROLLib_TLB; //这个是COM控件type CallBack = procedure(bS_flag,svalue1,svalue2,svalue3,svalue4,svalue5,svalue6,svalue7,svalue8:string);stdcall;type TForm1 = class(TForm) FullTunnelServiceControl1: TFullTunnelServiceControl; Button1: TButton; .......... ..........var Form1: TForm1; MyCallBack:CallBack;implementation{$R *.dfm}procedure CallBackProc(BS_flag,svalue1,svalue2,svalue3,svalue4,svalue5,svalue6,svalue7,svalue8:string);stdcall;var sMsgTemp:string;begin Form1.Memo3.Lines.Add(datetimeToStr(now) + '进入回调函数里面'); sMsgTemp:=''; sMsgTemp := '[业务响应包]' + #13 + ' SequenceID:' + svalue1 + #13 + ' MessID: ' + svalue2 + #13 + ' STATUS: ' + svalue3 + #13 + ' 参数4: ' + svalue4 + #13 + ' 参数5: ' + svalue5 + #13 + ' 参数6: ' + svalue6 + #13 + ' 参数7: ' + svalue7 + #13 + ' 参数8: ' + svalue8; form1.Memo3.Lines.Add(sMsgTemp);end;procedure TForm1.Button5Click(Sender: TObject);var p:cardinal; hr:string;begin MyCallBack:=CallBackProc; p:=Cardinal(@MyCallBack); ShowMessage('函数指针地址:' + inttostr(p)); hr:=FullTunnelServiceControl1.StartRecv_User(p); //调用COM组件接收线程 if hr='0' then showmessage('接收成功....!!!!') else showmessage('接收失败:' + hr);end;//只要点Button5按钮,便开起com组件的信息接收线程,如果有信息进来,CallBackProc回调函数便会自动接收到信息,现在的问题是,有信息进来后,能执行到Form1.Memo3.Lines.Add(datetimeToStr(now) + '进入回调函数里面'); 这一句,然后就提示"invalid pointer operation"错误,导致内存错误.
 
请高手帮看看.
 
你肯定写错了,应该是type CallBack = procedure(bS_flag,svalue1,svalue2,svalue3,svalue4,svalue5,svalue6,svalue7,svalue8:WideString); stdcall;COM 可不认识 delphi 的 string;>
 
to LSUPER 谢谢!widestring类型我也用过,但问题也是一样的.
 
月薪15-50K招聘it administratorKnowledge in DCOM or COM+ (which is in essence the same thing) Knowledge in IIS version 5 or higher Knowledge of Troubleshooting worker processes in IIS 希望10月上旬立即开始上班 地点:北京 三元桥 薪资:面议(能力好的话salary不是问题) 要求:英文要好,读写听说均流利 简历发送邮箱:hr_grace@126.com。电话和我联系13947437351
 
uses ShareMem试试
 
多人接受答案了。
 
后退
顶部