关于 Delphi 中流的使用 用 TMemoryStream(内存流) 入门

Posted 每天进步一点点……

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于 Delphi 中流的使用 用 TMemoryStream(内存流) 入门相关的知识,希望对你有一定的参考价值。

所谓"流", 就是一段数据或是一块内存;
在进行流操作时, 我们不必关心流中的数据到底是什么; 只需要知道流的大小和当前的指针位置. 所以流只有两个属性:
Size、Position.
对流的操作, 不过就是读取和写入. 所以流最主要的方法就是 Read 和 Write.
在很多控件的使用中, 读取主要用 LoadFromStream; 写入主要用 SaveToStream.

举个例子: (建立新工程, 添加两个 Memo、两个 Button)

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Memo1: TMemo;
    Memo2: TMemo;
    Button1: TButton;
    Button2: TButton;

    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  end;

var
  Form1: TForm1;

implementation

$R *.dfm

var
  mStream: TStream; 声明一个流对象

procedure TForm1.FormCreate(Sender: TObject);
begin
  mStream := TMemoryStream.Create;
  TStream 是抽象类, 只能通过其子类实例化; 这里我们用了内存流来生成实例

  Memo1.Lines.Text := \'ABCDEFGHIJKLMNOPQRSTUVWXYZ\';
  给 Memo1 个初始值
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
  Memo1.Lines.SaveToStream(mStream);       把 Memo1 中的内容写入到流

  ShowMessage(IntToStr(mStream.Size));     26, 当前流的大小
  ShowMessage(IntToStr(mStream.Position)); 26, 当前流的指针
end;


procedure TForm1.Button2Click(Sender: TObject);
begin
  mStream.Position := 4;               调整流的当前指针位置
  Memo2.Lines.LoadFromStream(mStream); 读出流中的内容到 Memo2

  
    现在 Memo2 中的内容应该是: EFGHIJKLMNOPQRSTUVWXYZ
    如果 Position 是 0, Memo2 读出的内容会是: ABCDEFGHIJKLMNOPQRSTUVWXYZ
    如果 Position 等于 Size, 在这里如果是 26, Memo2 就读不出什么了.
  

end;


procedure TForm1.FormDestroy(Sender: TObject);
begin
  mStream.Free; 流释放时, 所用内存当然也会同时释放
end;

end.

关于delphi 中的canvas重影问题

大家好,我在delphi中的一个窗体上面用canvas来作图,由于画图的范围超过了窗体的范围,所以在窗体上面用了滚动条,但是当我向右拖动滚动条时,拖出来的部分却出现了重影,请问这个问题有办法来解决吗?

不要在窗体上用滚动条,在窗体上放一个 scrollBox,用scrollBox的canvas画图。 参考技术A 每滚动一下就重画一次。没有其他好方法

以上是关于关于 Delphi 中流的使用 用 TMemoryStream(内存流) 入门的主要内容,如果未能解决你的问题,请参考以下文章

关于 Delphi 中流的使用 用流读写结构化文件

关于 Delphi 中流的使用 遍历读取流中的所有数据

Scala 中流的用例

关于delphi 中的canvas重影问题

关于delphi中照片显示的问题

关于delphi的开发方式