学院首页 软件应用 编程开发 创意设计 认证培训 软件论坛
ASP ASP.NET PHP JSP SQL MYSQL Java VB

您的位置:学院 >> 编程开发 >> Delphi >> 如何对数据流 INSERT、APPEND


如何对数据流 INSERT、APPEND


p align="JUSTIFY">  如果不是第一次初始化的话。因此,有必要对多段数据流的整合操作做一些有利的约束。如增加INSERT(插入)、 APPEND(追加)之类的方法。从TStream的定义及其派生子类我们得知,CopyFrom是唯一可以加以利用的公用函数,它从指定的流上拷贝指定数量的字节后返回一长整型值,该值代表最后成功传送的实际字节数。其后,我们用Seek函数来避免数据流之间的相互覆盖,并以此来界定后来者加入的位置。在SEEK函数的定义中,第一个参数为偏移量,第二个参数是个定位标识,其定义如下:

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过程当中,仅仅只是把新来的流加到最前面,而没有考虑在任何位置的插入问题,如果要对任何条件都满足的话,就要考虑一个复杂的前提:流的分解。由于篇幅有限,本文不再叙述,有兴趣的朋友可试一试。



技术文章快速查找

栏目导航
软件应用
·操作系统 ·杀毒防黑 ·应用软件
·聊天软件 ·网络软件  
Web开发
·ASP ·JavaScript ·CGI
·JSP ·VbScript ·Web服务器
·PHP ·XML  
开发语言
·VB ·VC ·ASP.NET
·Java ·C/C++ ·Delphi
数据库开发
·MySQL ·SQL/Access ·PowerBuilder
·Oracle ·DB2  
网站设计
·Flash ·Dreamweaver ·HTML/CSS
·Fireworks ·FrontPage  
平面设计
·Photoshop ·CorelDraw ·AutoCAD
·FreeHand ·Illustrator ·3DsMAX
媒体动画
·Director ·Authorware ·Maya
·视频处理    


相关软件 产品库推荐
·笔记本 ·台式机 ·服务器
·数码相机 ·手机 ·GPS
·DV摄像机 ·MP3 ·MP4
·CPU ·硬盘 ·内存
·主板 ·显卡 ·显示器
·打印机 ·投影机 ·路由器

还没人留言,抢个先,哈哈!
对"如何对数据流 INSERT、APPEND"的评论 - 快速回贴
内容:
  [完成后可按Ctrl+Enter发布]

百度中 如何对数据流 INSERT、APPEND 相关内容
Google搜索中 如何对数据流 INSERT、APPEND 相关内容
雅虎中 如何对数据流 INSERT、APPEND 相关内容
Sogou搜索中 如何对数据流 INSERT、APPEND 相关内容

相关软件 最新回复帖子:

·Windows Vista 中卸载软件的不同方式
·没有mysql支持时的替代方案
·一个可以发送附件及HTML格式邮件的PHP类
·AutoCAD打造精致三维鸟笼实例详解
·Photoshop自定义水晶字特效样式
·AutoCAD三维基础实例教程
·PS为黑背景长发美女照片抠图换背
·用Photoshop自制个性摩托车贴花小经验
·轻松几步将美女照片处理为手工素描
·巧用Photoshop画笔轻松绘制创意特效


  相关软件 如何对数据流 INSERT、APPEND相关文章
定制任务栏上的系统菜单 活用 SetSelTextBuf
捕捉来自 Thread 的异常 在DEPHI 4.0中实现动画功能
修改与克隆对象属性 控制系统菜单
怎样建立简单的任务栏应用程序 用修改文件时间的方法来加密文件
用Dephi程序维护Paradox 数据表的索引 有“背景”的窗体
自定义快速报表的打印预览窗口 用Delphi实现自定义颜色对话框及其构件
Delphi实用编程经验二则