COM的PCHAR类型问题 ( 积分: 200 )

  • 主题发起人 主题发起人 songalex
  • 开始时间 开始时间
S

songalex

Unregistered / Unconfirmed
GUEST, unregistred user!
在写COM时,定义方法的参数类型为Pchar(in,out),实现中不作任何处理,在前端调用该方法时先申请内存,然后调用该方法,在freemem时出现,invaild pointer operation!代码如下:
COM中的方法定义为:
function TTest.Read(var pRecord:pchar):integer;
begin
end;
前端代码为:
var buff:pchar;
begin
allocmem(buff,100);
Read(buff);
//为TTest的read,去掉这一名freemem不会出错误
freemem(buff);
//error;
end
 
COM中不要用PChar,传字符串可以用BSTR,传一段二进制数据用Variant,然后用VarArrayCreate,VarArrayLock,VarArrayUnlock来操作
 
能说明一下为什么不能用pchar类型吗,数据是可以正常返回的,只是freemem时出错.
 
后退
顶部