delphi中流stream的操作.(个人笔记)

2005年10月25日,今天在做一个自己用的小程序. 需要用到流把一些字符符和文件连接起来.使用过程中出现了不少问题. 这些问题需小,但也浪费了我不少时间去解决.现在把问题记录下来以方便我将来查阅:

流的操作不外乎"读"Write, "写"Read,定位Seek:

把信息读入流里是使用.TStream.Write(var buf ;count:integer)方法.

而把信息从流里读给变量则用TStream.Read(var buf;count:integer)方法.

这两个方法在我刚学使用流整天搞乱,需然现在已尼很清楚了但还是写下来.

如果一个流想把另一个流读入自己,应该写成这样.

s1.Write(s2.Memory^,s2.size); //写成s1.Write(s2,s2.size);是错误的.

如果想让流读入一个字符串应该这样写:

var

s:string;

s1:TMemoryStream;

begin

s:='你要的字符串';

s1.Write(s[1],length(s)-1);//s1.write(s,length(s));是错误的,因为在delphi里,字符的第一位s[0]用来保存了字符的长度.这样写读入的信息也是错误的.这是我的理解,不过为什么length(s)要减一,我不是搞不懂.

........

流的信息读完了,是时候作其它处理了,我现在要把他保存在一个数组里.应该这样做:

var

b:ansistring;

begin

    setLength(b,s.size);
    s.Seek(0,soFromBeginning);
    s.Read(b[1],s.Size);//这里也要注意写成了s.Read(b,s.size)也是错的.

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值