扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
soFromBeginning表示在流的顶头开始位移,第一个参数必须 $#@62;=0.
soFromCurrent表示从当前位置开始位移。
soFromEnd表示从流的最后开始位移,第一个参数必须$#@60;= 0.
SEEK操作成功后,由Position属性存放流当前的位置值。Size属性是该流到目前为止的长度。
具体操作见以下范例:
unit DemoUnit;
...
type
TForm1 = class(TForm)
...
Memo1: TMemo;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);private
{ Private declarations }
// 建立一个演示内存流
STO : TMemoryStream;public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.FormCreate(Sender: TObject);
begin...
Try
//创建内存流的对象STO := TMemoryStream.Create;
Finally
...
end;
...
end;
procedure TForm1.Button1Click(Sender: TObject);
begin...
//初始化内存流对象,并移动指针到头部
STO.LoadFromFile( OpenDialog1.FileName );
STO.Seek( 0, soFromBeginning );
//把调入的东西显示出来
Memo1.Lines.LoadFromStream( STO );
...
end;
//以下的工作必须在内存流初始化后方能进行
//插入演示
procedure TForm1.Button2Click(Sender: TObject);
Var
SWA : TMemoryStream; //定义一个临时内存流
begin
...
//创建临时工作的对象
SWA := TMemoryStream.Create;
//加载要插入的目标
SWA.LoadFromFile( OpenDialog1.FileName );
//移动演示流的指针到头部,准备交换
STO.Seek( 0, soFromBeginning );
//移动临时流的指针到尾部,接收演示流
SWA.Seek( 0, soFromEnd );
SWA.CopyFrom( STO, STO.Size );
//把演示流换成新的内容
STO.LoadFromStream( SWA );
STO.Seek( 0, soFromBeginning );
//把插入后的内容显示出来
Memo1.Lines.LoadFromStream( STO );
...
end;
//追加演示
procedure TForm1.Button3Click(Sender: TObject);
Var
SWA : TMemoryStream;//定义一个临时内存流
begin
...
//创建临时工作的对象并加载要追加的目标
SWA := TMemoryStream.Create;
SWA.LoadFromFile( OpenDialog1.FileName );
//移动演示流的指针到尾部,接收临时流
STO.Seek( 0, soFromEnd );
SWA.Seek( 0, soFromBeginning );
//拷贝,移动指针后显示
STO.CopyFrom( SWA, SWA.Size );
STO.Seek( 0, soFromBeginning );
Memo1.Lines.LoadFromStream( STO );
...
end;
....
在Insert过程当中,仅仅只是把新来的流加到最前面,而没有考虑在任何位置的插入问题,如果要对任何条件都满足的话,就要考虑一个复杂的前提:流的分解。由于篇幅有限,本文不再叙述,有兴趣的朋友可试一试。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者