如何从PChar类型取出一部分子字符串?

zhoufs 2009-11-22 08:09:48


var
Buff: pchar;
n:integer;
Fs:TFileStream;
begin
Fs:=TFileStream.Create('c:\abc.txt',fmCreate);
n:=Socket.ReceiveBuf(Buff^, DataSize);
Fs.WriteBuffer(????? , n-3);
...........
...........
end;
----------------------------------------------------------
请问: 想要将Buff中第4个字长开始直到最后的内容写入Fs中,不知如何处理?



...全文
63 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhoufs 2009-11-23
  • 打赏
  • 举报
回复
wooden954: 你说得对的, 但应该写成:(Buffer+4)^

加分!
jadeluo 2009-11-22
  • 打赏
  • 举报
回复
没玩过比Delphi 7版本高的Delphi, 不能肯定二楼的Fs.WriteBuffer((Buff+4), n-3); 这种玩法在高版本的Delphi是否能成。
还是写个我的指针玩法吧:

var
Buff: pchar;
n:integer;
Fs:TFileStream;
begin
Fs:=TFileStream.Create('c:\abc.txt',fmCreate);
n:=Socket.ReceiveBuf(Buff^, DataSize);
inc (Buff, 3);
Fs.WriteBuffer(Buff, n-3);
wooden954 2009-11-22
  • 打赏
  • 举报
回复
var
Buff: pchar;
n:integer;
Fs:TFileStream;
begin
Fs:=TFileStream.Create('c:\abc.txt',fmCreate);
n:=Socket.ReceiveBuf(Buff^, DataSize);
Fs.WriteBuffer((Buffer+4) , n-3);
end;
原因:PChar字符串其实就是一个Char型的指针,并且这个指针可以进行加减操作,所以Buffer+4指的就是从Buffer的第四个字符开始

5,388

社区成员

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

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