一个Stream类,自己编写的限制大小的

{--------------------------------------------------------------------------------
*单元:
*日期:
*作者
---------------------------------------------------------------------------------}
unit umemoryStream;

interface
uses Classes,sysutils,windows;

type
SMemoryStream = Class
    m_BufferSize : longint;
    m_UseSize :longint;
private
    Buf:Pchar;
    Procedure Realloc(var ANeSize:longint);
public
    procedure SetSize(ANewSize:longint);
    constructor Create();
    destructor  Destory();
    procedure LoadFromStream(AStream:TStream);
    procedure LoadFromFile(AFileName:String);
    procedure SavetoFile(AFileName:String);
    procedure SavetoStream(AStream:TStream);

end;
implementation


constructor SMemoryStream.Create();
begin
    Getmem(Buf,8192000);   //SetSize
    m_BufferSize:=8192000;
end;

destructor  SMemoryStream.Destory();
begin
    Freemem(Buf,8192000);
end;

procedure SMemoryStream.LoadFromStream(AStream:TStream);
begin
    AStream.Position:=0;
    if (AStream.Size<>0) then
    begin
        AStream.Read(Buf^,AStream.Size);
        m_useSize:=AStream.Size;
    end;
end;

procedure SMemoryStream.SavetoFile(AFileName:String);
var
    Stream:TStream;
begin
    Stream:=TFileStream.Create(AFileName,fmCreate);
    try
        SavetoStream(Stream);
    finally
        Stream.Free;
    end;
end;
procedure SMemoryStream.SavetoStream(AStream:TStream);
begin
    if (m_usesize<>0) then
    begin
        AStream.WriteBuffer(Buf^,m_usesize);
    end;
end;

procedure SMemoryStream.LoadFromFile(AFileName:String);
var
    Stream:TStream;
begin
    Stream:=TFileStream.Create(AFileName,fmOpenRead );
    Try
        LoadFromStream(Stream);
    Finally
        Stream.Free;
    end;
end;

Procedure SMemoryStream.Realloc(var ANeSize:longint);
begin
//    GlobalAlloc(ANeSize);
end;

procedure SMemoryStream.SetSize(ANewSize:longint);
begin
    m_BufferSize := ANewSize;
    Realloc(ANewSize);
end;
end.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值