PChar 的问题?

lxj_com2006 2006-12-26 06:44:14

PChar 的问题?

{===============================================================================
[函数]: GetIpRoomMapping
[参数]: OutIps - 返回IP字符串,OutRooms - 返回的RoomNo字符串
[功能]: 取Room表IP对应的Roomno
[返回]: NULL
[说明]: 支持多一房多IP改动
[程序]: lxj_com
[日期]: 2006-11-18 15:00 last: 2006-11-18 15:00
-------------------------------------------------------------------------------}
procedure Tdm.GetIpRoomMapping(OutIps: pChar; OutRooms: pChar);
var
strsql:string;
strIp,strtmp:string;
strroom,s:string;
i:integer;
begin
strroom := '';
strIp := '';

strsql := ' SELECT IPAddress,RoomNo FROM VOD_View '; //ORDER BY RoomNo

qrTmp.Close;
qrTmp.SQL.Text := strsql;
qrTmp.Open;

for i:=0 to qrTmp.RecordCount-1 do
begin
strtmp := PChar(trim(qrTmp.FieldByName('IPAddress').AsString));
s := PChar(trim(qrTmp.FieldByName('Roomno').AsString));

strIp := strIp + strtmp;
strroom := (s + strroom);

qrTmp.Next;
end;

StrCopy(OutIps, PChar(strIP));
StrCopy(OutRooms, PChar(strroom));
end;

函数返回后,OutIps只有255个字符了,但是strIp的字符是无限长的字符串,
怎么处理呀!
PChar是怎么理解的???

...全文
223 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
lxj_com2006 2006-12-30
  • 打赏
  • 举报
回复
感谢 yixilee(怡曙馆主) 和 zhangl_cn(和尚-修行)

问题解决了:

strsql := ' SELECT IPAddress,RoomNo FROM VOD_View ';

这个表的数据库太了,

而调用GetIpRoomMapping的时候 OutIps 只分配了1060 , OutRooms 400 字节

我不用string,而是直接用
if length(OutIps)<10600 then
Strcat(OutIps,FieldByName('IPAddress').AsString);

但我还有点没有搞明白,string是自动转换的,最大支持2G的字符串,

而将它Copy的时候就只剩255了。把string改为PAnsiChar好象又可以。


本贴地址:http://community.csdn.net/Expert/topic/5257/5257683.xml?temp=.1726343
zhangl_cn 2006-12-27
  • 打赏
  • 举报
回复
应该由调用者先申请存储空间,再把指针传递过来:
const
MAXLEN = 255;
var
ptrIP, ptrRoom: PChar;
begin
//...
GetMem(ptrIP, MAXLEN);
GeTMem(ptrRoom, MAXLEN);
GetIpRoomMapping(ptrIP, ptrRoom);
//...
FreeMem(ptrIP);
FreeMem(ptrRoom);
end;

最好在参数中加入缓冲区长度

procedure Tdm.GetIpRoomMapping(OutIps, OutRooms: pChar; IPLen, RoomLen: Integer);
yixilee 2006-12-26
  • 打赏
  • 举报
回复
建议你看看下面这个帖子,不懂的话可以多交流哈。
http://topic.csdn.net/t/20050721/14/4159093.html

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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