如何获得超过1000个字符以上的pchar??

lbd8848 2003-07-07 08:40:02
我建了一个dll ,其中的一个函数中包含1000个字符以上的返回数据,返回类型为pchar,调用时它大概返回了1000左右的字符,请问各位大侠,如何才能获得完整的返回值!!!
...全文
32 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
newyj 2003-07-07
  • 打赏
  • 举报
回复

valback:=valback+'......';
如果valback正确

getmem(p,length(valback)+1);
strpcopy(p,valback);
如果 valback中有#0 则 显示就只有一部分了
zyuefeng1 2003-07-07
  • 打赏
  • 举报
回复
getmem(p,2000);
StrCopy(p,ValBack) ;
Drate 2003-07-07
  • 打赏
  • 举报
回复
手动分配存储空间应该不会出现这样的问题了吧
因为String是DELPHI的类型,在WIN 32 API中是没有的
所以要用Pchar类型
wjlsmail 2003-07-07
  • 打赏
  • 举报
回复
// 试试 :

getmem(p,2000);
StrCopy(p,ValBack) ;
ThenLong 2003-07-07
  • 打赏
  • 举报
回复
处理这种问题可以在函数处理的时候动态建立临时文件,存储你的字符串,返回的时候读出来,可能会好些。
记得用完删除阿
Linux2001 2003-07-07
  • 打赏
  • 举报
回复
使用StrAlloc分配PChar的空间,使用StrDispose释放PChar空间
var
p :PChar;
begin
p :=StrAlloc(1001);
p := 1000个字符;
ShowMessage(StrPas(p));
StrDispose(p);
end;
lbd8848 2003-07-07
  • 打赏
  • 举报
回复
up
lbd8848 2003-07-07
  • 打赏
  • 举报
回复
但我在dll内部字符的处理是使用string的
当返回的时候才将返回字符转化为pchar型的
var
valback:string;
p:pchar;
begin
valback:=valback+ 'dddddddddddddd.....';
valback:=valback+'......';
getmem(p,2000);
p:=pchar(valback);
result:=p;
end;
但返回好像还是不完整,(有时完整,有时不完整,每次返回都不一样)
lbd8848 2003-07-07
  • 打赏
  • 举报
回复
但我在dll内部字符的处理是使用string的
当返回的时候才将返回字符转化为pchar型的
var
valback:string;
p:pchar;
begin
valback=valback+ 'dddddddddddddd.....';
valback=valback+'......';
getmem(p,2000);
p:=pchar(valback);
result:=p;
end;
但返回好像还是不完整,(有时完整,有时不完整,每次返回都不一样)


hkbarton 2003-07-07
  • 打赏
  • 举报
回复
getmem申请分配空间
newyj 2003-07-07
  • 打赏
  • 举报
回复
var
p:pchar;
getmem(p,2000);
申请空间时搞大点

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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