首页 > 其他 > 详细

合并(分割)流

时间:2019-03-10 17:48:48      阅读:134      评论:0      收藏:0      [点我收藏+]

合并(分割)流

/// <author>cxg 2018-9-14</author>
/// 合并流&分割流

unit uStream;

interface

uses
  System.SysUtils, System.Classes;

type
  /// <summary>
  /// stream.size type: int64 (8 bytes)
  /// </summary>
  TSize = packed record
    size: int64;
  end;

type
  TynStream = class(TDataModule)
  private
    { Private declarations }
  public
    { Public declarations }
    /// <summary>
    /// 将AStream1和AStream2两个流合并为dest一个流,
    /// </summary>
    /// <param name="ADest">合并后的流</param>
    /// <param name="AStream1">流1</param>
    /// <param name="AStream2">流2</param>
    class procedure MergeStream(ADest, AStream1, AStream2: TStream);
    /// <summary>
    /// 将source一个流,分为stream1, stream2两个流,
    /// </summary>
    /// <param name="ASource">待分割的流</param>
    /// <param name="AStream1">流1</param>
    /// <param name="AStream2">流2</param>
    class procedure SplitStream(ASource, AStream1, AStream2: TStream);
  end;

var
  ynStream: TynStream;

implementation

{%CLASSGROUP ‘Vcl.Controls.TControl‘}

{$R *.dfm}

class procedure TynStream.MergeStream(ADest, AStream1, AStream2: TStream);
var
  LSize: TSize;
begin
  ADest.Position := 0;
  LSize.size := AStream1.Size;
  ADest.Write(LSize, SizeOf(Int64));
  LSize.size := AStream2.Size;
  ADest.Write(LSize, SizeOf(Int64));
  AStream1.Position := 0;
  ADest.CopyFrom(AStream1, AStream1.Size);
  AStream2.Position := 0;
  ADest.CopyFrom(AStream2, AStream2.Size);
end;

class procedure TynStream.SplitStream(ASource, AStream1, AStream2: TStream);
var
  LCount, LCount2: Int64;
  LSize: TSize;
begin
  ASource.Position := 0;
  ASource.Read(LSize, SizeOf(Int64));
  LCount := LSize.size;
  ASource.Read(LSize, SizeOf(Int64));
  LCount2 := LSize.size;
  AStream1.Position := 0;
  AStream1.CopyFrom(ASource, LCount);
  AStream2.Position := 0;
  AStream2.CopyFrom(ASource, LCount2);
end;

end.

  

合并(分割)流

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

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