• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Delphi流操作(2)基本概念及函数声明

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

  前面一章我们知道了什么流,而在今天这章里我们就来看看“流”的基本概念及函数声明

在我们的Delphi 中,所有的流对象可以的基类为 Tstream 类,其中定义了所有流的共同属性和方法具的的方法和属性如下:

TStream 类中定义的属性如下:

1.Size: 这个属性以字节的形式返回流中的数据大小;

2.Position:这个属性可是控制流中存取指针的位置;

这里我们引用万一里的一例子:

var
mStream: TStream; {声明一个流对象}

procedure TForm1.FormCreate(Sender: TObject);
begin
mStream := TMemoryStream.Create;
{TStream 是抽象类, 只能通过其子类实例化; 这里我们用了内存流来生成实例}

Memo1.Lines.Text := 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
{给 Memo1 个初始值}
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
Memo1.Lines.SaveToStream(mStream); {把 Memo1 中的内容写入到流}

ShowMessage(IntToStr(mStream.Size)); //这里我们可以用这个Size属性来查看这个流的具体大小是多少 这里的大小是26!!!因为是二十六个字母!!!

ShowMessage(IntToStr(mStream.Position)); {26, 当前流的指针}
end;


procedure TForm1.Button2Click(Sender: TObject);
begin
mStream.Position := 4; {调整流的当前指针位置} //这里我们用到了Position这个属性来控制从流的哪个位置来装载数据;
Memo2.Lines.LoadFromStream(mStream); {读出流中的内容到 Memo2}

{
现在 Memo2 中的内容应该是: EFGHIJKLMNOPQRSTUVWXYZ
如果 Position 是 0, Memo2 读出的内容会是: ABCDEFGHIJKLMNOPQRSTUVWXYZ
如果 Position 等于 Size, 在这里如果是 26, Memo2 就读不出什么了.
}

end;


procedure TForm1.FormDestroy(Sender: TObject);
begin
mStream.Free; {流释放时, 所用内存当然也会同时释放}
end;

end.

Tstream 中定义了四个虚拟方法:

1.Read:这个方法的作用是将流中的数据读取出来。它的原型为:

Function Read(Var Buffer; Count:Longint):Longint;virtual;abstract;
//参数1:Buffer 这个是存放数据的缓冲区。
//参数2:Count 这个是需要读出来的数据的字节数
//*注意:这个方法的返回值为实际读出的字节数,字可以小于或是等于Count中指定的值;
 

2.Write:这个方法和上面的那个是相反的,这个是将数据写入流中,它的原型为:

Function Write(Var Buffer; Count:Longint):Longint;virtual;abstract;
//参数1:Buffer 这个是为将要写入流中的数据的缓冲区。
//参数2:Count 为数据升序的字节数
//*注意:这个方法的返回值为实际写入的字节数,字可以小于或是等于Count中指定的值;
 

3.Seek:这个方法可以很方便的实现流中读取指针的移动,函数的原型:

Function Seek(Offset:Longint; Origint:Word):Longint;virtual;abstract;
//参数1:为偏移字节数,他的参数Origint指出Offset的实际意义,其可能的取值下面三个
         (1)soFromBeginning:Offset 为移动后指针距离开始位置。此时的Offset必须大于或等于0;
         (2)soFromCurrent: Offset 为移动指针与当前指针的相对位置;
         (3)soFromEnd: Offset 为移动后指针距离数据结束的位置。此时的Offset必须小于或等于0.该方法返回值为移动后指针的位置;
//参数2:Count 这个是需要读出来的数据的字节数
 

今天先写这么多,有时间再写!

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Ubuntu下安装Matlab步骤发布时间:2022-07-18
下一篇:
[转]李战大师-悟透delphi 第十章 操作界面与操作逻辑发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap