其他语言

位置:IT落伍者 >> 其他语言 >> 浏览文章

DELPHI基础教程:开发Delphi对象式数据管理功能(一)[5]


发布日期:2020年06月27日
 
DELPHI基础教程:开发Delphi对象式数据管理功能(一)[5]

⑵ Write方法

Write方法从内存流内部缓沖池的当前位置开始写入二进制数据其实现如下

function TMemoryStreamWrite(const Buffer; Count: Longint) Longint;

var

Pos: Longint;

begin

if (FPosition >= ) and (Count >= ) then

begin

Pos := FPosition + Count;

if Pos > then

begin

if Pos > FSize then

begin

if Pos > FCapacity then

SetCapacity(Pos)

FSize := Pos;

end;

SystemMove(Buffer Pointer(Longint(FMemory) + FPosition)^ Count)

FPosition := Pos;

Result := Count;

Exit;

end;

end;

Result := ;

end;

Buffer中存储要写入流的二进制数据如果要写入的数据的字节超出了流的内存池的大小则调用SetCapacity方法再分配内存然后用内存复制函数将Buffer中的数据复制到FMemory中接着移动位置指针并返回写入数据的字节数分析这段程序可以知道FCapacity的值和FSize的值是不同的

⑶ Clear方法

Clear方法消除内存流中的数据将Memory属性置为nil并将FSize和FPosition 的值设为其实现如下

procedure TMemoryStreamClear;

begin

SetCapacity(

FSize := ;

FPosition := ;

end;

⑷ LoadFromStream和LoadFromFile方法

LoadFromStream方法首先根据传入的Stream的Size属性值重新分配动态内存然后调用Stream的ReadBuffer方法往FMemory中复制数据结果Stream的全部内容在内存中有了一份完整拷贝其实现如下

procedure TMemoryStreamLoadFromStream(Stream: TStream)

var

Count: Longint;

begin

StreamPosition := ;

Count := StreamSize;

SetSize(Count)

if Count <> then StreamReadBuffer(FMemory^ Count)

end;

LoadFromFile与LoadFromStream是一对方法LoadFromFile首先创建了一个TFileStream对象然后调用LoadFromStream方法将FileStream文件流中的数据写入MemoryStream中

返回目录DELPHI基础教程

编辑推荐

Java程序设计培训视频教程

JEE高级框架实战培训视频教程

Visual C++音频/视频技术开发与实战

Oracle索引技术

ORACLEG数据库开发优化指南

Java程序性能优化让你的Java程序更快更稳定

C嵌入式编程设计模式

Android游戏开发实践指南

[] [] [] [] []

               

上一篇:DELPHI基础教程:Delphi自定义部件开发(四)[1]

下一篇:DELPHI基础教程:开发Delphi对象式数据管理功能(一)[4]