您的位置:首页 > 编程语言 > Delphi

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

2012-01-26 23:47 405 查看
前面一章我们知道了什么流,而在今天这章里我们就来看看“流”的基本概念及函数声明

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

TStream类中定义的属性如下:

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

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

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

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

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

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

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

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

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

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

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

end;

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

end.


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

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

FunctionRead(VarBuffer;Count:Longint):Longint;virtual;abstract;

//参数1:Buffer这个是存放数据的缓冲区。

//参数2:Count这个是需要读出来的数据的字节数

//*注意:这个方法的返回值为实际读出的字节数,字可以小于或是等于Count中指定的值;



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

FunctionWrite(VarBuffer;Count:Longint):Longint;virtual;abstract;

//参数1:Buffer这个是为将要写入流中的数据的缓冲区。

//参数2:Count为数据升序的字节数

//*注意:这个方法的返回值为实际写入的字节数,字可以小于或是等于Count中指定的值;



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

FunctionSeek(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这个是需要读出来的数据的字节数



今天先写这么多,有时间再写!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: