首页 > 其他 > 详细

合并(分割)流

时间:2019-11-05 17:49:47      阅读:77      评论:0      收藏:0      [点我收藏+]

合并(分割)流

unit uStream;

interface

uses
  System.SysUtils, System.Classes;

type
  TStreamSize = packed record
    size: int64;
  end;

  TStreamNum = packed record
    num: Integer;
  end;

  TStreamArray = array of TStream;

type
  TynStream = class
  private
    { Private declarations }
  public
    { Public declarations }
    class procedure MergeStream(ms: TStream; mss: TStreamArray);
    class procedure SplitStream(ms: TStream; mss: TStreamArray);
  end;

var
  ynStream: TynStream;

implementation

class procedure TynStream.MergeStream(ms: TStream; mss: TStreamArray);
var
  LSize: TStreamSize;
  LNum: TStreamNum;
  i: Integer;
begin
  ms.Position := 0;
  LNum.num := High(mss);
  ms.Write(LNum, SizeOf(Integer));  //有几个流
  for i := 0 to LNum.num - 1 do
  begin
    LSize.size := mss[i].Size;
    ms.Write(LSize, SizeOf(Int64));   // 流的大小
    ms.CopyFrom(mss[i], LSize.size);
  end;
end;

class procedure TynStream.SplitStream(ms: TStream; mss: TStreamArray);
var
  i: Integer;
  LSize: TStreamSize;
  LNum: TStreamNum;
begin
  ms.Position := 0;
  ms.Read(LNum, SizeOf(Integer)); //有几个流
  SetLength(mss, LNum.num);
  for i := 0 to LNum.num - 1 do
  begin
    ms.Read(LSize, SizeOf(Int64));   //流的大小
    mss[i] := TMemoryStream.Create;
    mss[i].CopyFrom(ms, LSize.size);
  end;
end;

end.

  

合并(分割)流

原文:https://www.cnblogs.com/hnxxcxg/p/11799255.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!