Delphi Tstream和TmemoryStream流操作

Tstream 和TmemoryStream流操作

流的作用很广泛,用作缓存非常合适。

主要方法及属性:

  • position
    用来定位流的开始位置
    也可以用seek来定位流的起始位置:
	function Seek(Offset: Longint; Origin: Word): Longint; overload; virtual;
    function Seek(const Offset: Int64; Origin: TSeekOrigin): Int64; overload; virtual;
    function Seek(const Offset: Int64; Origin: Word): Int64; overload; deprecated; inline;
property Position: Int64 read GetPosition write SetPosition;
  • write和writebuff
    用来将信息写入流
    Classes中这样描述:
    procedure WriteBuffer(const Buffer; Count: Longint); overload;
    procedure WriteBuffer(const Buffer: TBytes; Count: Longint); overload;
    procedure WriteBuffer(const Buffer: TBytes; Offset, Count: Longint); overload;
  • read和readbuffer
    从流中读取信息
    Classes中这样描述:
	procedure ReadBuffer(var Buffer; Count: Longint); overload;
    procedure ReadBuffer(var Buffer: TBytes; Count: Longint); overload;
    procedure ReadBuffer(var Buffer: TBytes; Offset, Count: Longint); overload;
  • copyFrom方法
    拷贝一个流
function CopyFrom(const Source: TStream; Count: Int64): Int64;
  • LoadFromFile方法(TmemoryStream)
    将一个文件载入到流
procedure LoadFromFile(const FileName: string);
  • LoadFromStream方法(TmemoryStream)

拷贝一个流

procedure LoadFromStream(Stream: TStream);

自己的一个demo:

写入动态数组及读取:

procedure TForm1.btn1Click(Sender: TObject);
var
  arr,arrb:array of Double;      //定义一个动态数据
  Tstream: TMemoryStream;
  I: Integer;
  tempOut, tempIn:PChar;
begin
  SetLength(arr,10);
  for I := 0 to 10 do
  begin
    arr[i]:=i;
  end;
  Tstream:=TMemoryStream.Create;

  tempIn := AllocMem(SizeOf(double)*10);       //为pchar指针申请一块内存,大小为要写入的内容的大小
  CopyMemory(tempIn, @arr[0],SizeOf(double)*10);     //将要写入的数组拷贝到pchar指针指向的内存

  Tstream.WriteBuffer(tempIn^,SizeOf(double)*10);     //第一种方法,用pchar指针写入
//  Tstream.WriteBuffer(@arr[0],SizeOf(double)*10);       //直接写入动态数组,注意动态数组
                                                          //的第一个元素的地址为:@数组名[0]


  tempOut := AllocMem(SizeOf(double)*10);         //申请一块内存
  Tstream.Position:=0;       //设置要读取的内容的起始位置
  Tstream.ReadBuffer(tempOut^,SizeOf(double)*10);      //读取流中的数据到pchar指针指向的内存
  SetLength(arrb, 10);      //设置动态数组的大小
  CopyMemory(@arrb[0],tempOut,SizeOf(double)*10);      //拷贝读取数据到动态数组
  FreeAndNil(Tstream);      //不再使用流时,销毁流

end;

end.
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值