看代码:
procedure recall(hTalk:HTALK;pMes:Pchar;iLen:integer);
var st:string;
begin
  st:=strpas(pMes);
  st:=Leftstr(st,ilen);
  NetPhoneForm.Edit1.Text:=st;
end;
这段代码 st:=strpas(pMes); 程序一执行到这里 就报读写地址 错误
请问哪位大虾知道哪儿出了问题!先谢了!急急!!

解决方案 »

  1.   

    strpas 是将pchar转成string, 能说明你的函数是怎么调用的吗?抛个异常看看!
    try
     ...
    except
      on E: Exception showmessage(E.Message);
    end;
      

  2.   

    我是通过别人的一个设置 回掉函数 :
    procedure Hbtalk_SetCallBackFun(pMesCallBack:Pointer);far;stdcall;external 'talk.dll' name 'Hbtalk_SetCallBackFun';
    的函数把它设置
    现在的异常是:Access violation at address 0040409f in module
    'client_demo.exe'.read of address 00000005
    凡是一对 他操作就有错 如果直接为NetPhoneForm.Edit1.Text:=‘asdf’;
    程序就不会报错
      

  3.   

    表面上是没问题的
    可能是你传的pMes不对吧
    还有其他代码没?
      

  4.   

    调用函数recall()的代码贴出来
      

  5.   

    我经过 Hbtalk_SetCallBackFun(@recall); 的设置后
    一但调用 Hbtalk_SendMessage(h,pchar('aaaaa'),5);这个函数 
    就会自动转入 recall 中
    我想说的就是 在pMEs中还会有一些乱码
    因为发送这个字符的通道和语音是一个通道 我看了 是有一些
    乱马
      

  6.   

    还是看不出来,不知道函数内部是什么样子的
    Sorry!
    小生解答不了
    闪人,睡觉
    ----------
    Hbtalk_SendMessage(h,pchar('aaaaa'),5);//用‘aaaaa’就不用转换