2024年6月14日发(作者:)
希望对大家有所帮助,多谢您的浏览!
delphi TMemoryStream对象用法
TMemoryStream对象
TMemoryStream对象是一个管理动态内存中的数据的Stream对象,它是从
TCustomMemoryStream中继承下来的,除了从 TCustomMemoryStream中继承的属
性和方法外,它还增加和覆盖了一些用于从磁盘文件和其它注台读数据的方法。
它还提供了写入、消除内存内 容的动态内存管理方法。下面介绍它的这些属性
和方法。
TMemoryStream的属性和方法
1. Capacity属性
声明:property Copacity: Longint;
Capacity属性决定了分配给内存流的内存池的大小。这与Size属性有些不
同。Size属性是描述流中数据的大小。在程序中可以将Capacity的值设置的比
数据所需最大内存大一些,这样可以避免频繁地重新分配。
2. Realloc方法
声
明:function Realloc(var NewCapacity: Longint): Pointer; virtual;
Realloc方法,以8K为单位分配动态内存,内存的大小由NewCapacity指定,
函数返回指向所分配内存的指针。
3. SetSize方法
SetSize方法消除内存流中包含的数据,并将内存流中内存池的大小设为
Size字节。如果Size为零,是SetSize方法将释放已有的内存池,并将Memory
属性置为nil;否则,SetSize方法将内存池大小调整为Size。
4. Clear方法
声明:procedure Clear;
Clear方法释放内存中的内存池,并将Memory属性置为nil。在调用Clear方法
后,Size和Position属性都为0。
5. LoadFromStream方法
声明:procedure LoadFromStream(Stream: TStream);
LoadFromStream方法将Stream指定的流中的全部内容复制到MemoryStream中,
复制过程将取代已有内容,使MemoryStream成为Stream的一份拷贝。
6. LoadFromFile方法
声明:procedure LoadFromFile(count FileName: String);
LoadFromFile方法将FileName指定文件的所有内容复制到MemoryStream中,并
取代已有内容。调用LoadFromFile方法后,MemoryStream将成为文件内容在内
存中的完整拷贝。
TMemoryStream对象的实现原理
授课:XXX
希望对大家有所帮助,多谢您的浏览!
TMemoryStream从TCustomMemoryStream对象直接继承,因此可以享用
TCustomMemoryStream的属性和方法。前面讲过,TCustomMemoryStream是用于内
存中数据操作的抽象对象,它为 MemoryStream对象的实现提供了框架,框架中
的内容还要由具体MemoryStream对象去填充。TMemoryStream对象就是按动态
内存管理的需要填充框架中的具体内容。下面介绍TMemoryStream对象的实现。
1. TMemoryStream属性的实现
TMemoryStream在其protected部分增加了一个Capacity属性,该属性决定
了MemoryStream 所占动态内存的大小。TMemoryStream首先在private部分声
明了FCapacity变量作为存储Capacity属性值的数据域,然后在 protected部
分声明了该属性。在属性声明的读控制部分简单读取FCapacity的值,在写控制
处调用了方法SetCapacity。该方法除了 给FCapacity赋值外还执行了修改
Capacity属性所必需操作如状态改变等。
下面是属性的实现:
TMemoryStream = class(TCustomMemoryStream)
private
FCapacity: Longint;
procedure SetCapacity(NewCapacity: Longint);
protected
…
property Capacity: Longint read FCapacity write SetCapacity;
public
…
end;
写控制方法SetCapacity的实现是这样的:
procedure acity(NewCapacity: Longint);
begin
SetPointer(Realloc(NewCapacity), FSize);
FCapacity := NewCapacity;
end;
在SetCapacity
方法先是调用Realloc重新分配内存,然后用NewCapacity的值给FCapacity赋
值。Realloc方法进行某些对象状态的改变。
2. TMemoryStream对象方法的实现
⑴ Realloc方法
Realloc方法是TMemoryStream动态内存分配的核心,它的SetSize、
SetCapacity等方法最终都是调用Realloc进行内存的分配和初始化工作的。它
的实现如下:
const
MemoryDelta = $2000;
授课:XXX


发布评论