zoukankan      html  css  js  c++  java
  • Delphi 流操作(2)基本概念及函数声明

      前面一章我们知道了什么流,而在今天这章里我们就来看看“流”的基本概念及函数声明

    在我们的Delphi 中,所有的流对象可以的基类为 Tstream 类,其中定义了所有流的共同属性和方法具的的方法和属性如下:

    TStream 类中定义的属性如下:

    1.Size: 这个属性以字节的形式返回流中的数据大小;

    2.Position:这个属性可是控制流中存取指针的位置;

    这里我们引用万一里的一例子:

    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)); //这里我们可以用这个Size属性来查看这个流的具体大小是多少 这里的大小是26!!!因为是二十六个字母!!!

    ShowMessage(IntToStr(mStream.Position)); {26, 当前流的指针}
    end;


    procedure TForm1.Button2Click(Sender: TObject);
    begin
    mStream.Position := 4; {调整流的当前指针位置} //这里我们用到了Position这个属性来控制从流的哪个位置来装载数据;
    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.

    Tstream 中定义了四个虚拟方法:

    1.Read:这个方法的作用是将流中的数据读取出来。它的原型为:

    Function Read(Var Buffer; Count:Longint):Longint;virtual;abstract;
    //参数1:Buffer 这个是存放数据的缓冲区。
    //参数2:Count 这个是需要读出来的数据的字节数
    //*注意:这个方法的返回值为实际读出的字节数,字可以小于或是等于Count中指定的值;
     

    2.Write:这个方法和上面的那个是相反的,这个是将数据写入流中,它的原型为:

    Function Write(Var Buffer; Count:Longint):Longint;virtual;abstract;
    //参数1:Buffer 这个是为将要写入流中的数据的缓冲区。
    //参数2:Count 为数据升序的字节数
    //*注意:这个方法的返回值为实际写入的字节数,字可以小于或是等于Count中指定的值;
     

    3.Seek:这个方法可以很方便的实现流中读取指针的移动,函数的原型:

    Function Seek(Offset:Longint; Origint:Word):Longint;virtual;abstract;
    //参数1:为偏移字节数,他的参数Origint指出Offset的实际意义,其可能的取值下面三个
             (1)soFromBeginning:Offset 为移动后指针距离开始位置。此时的Offset必须大于或等于0;
             (2)soFromCurrent: Offset 为移动指针与当前指针的相对位置;
             (3)soFromEnd: Offset 为移动后指针距离数据结束的位置。此时的Offset必须小于或等于0.该方法返回值为移动后指针的位置;
    //参数2:Count 这个是需要读出来的数据的字节数
     

    今天先写这么多,有时间再写!

  • 相关阅读:
    openwrt官方固件怎么中继网络
    hibernate 映射一对多
    jsp连接access数据库
    表单判断值是否为空
    eclipse java ee jsp tomcat Server文件夹给删了,怎么办?
    Provided id of the wrong type for class pojo.Books. Expected: class java.lang.Integer, got class java.lang.Long
    myeclipse创建hibernate工程
    Caused by: java.sql.SQLException: Field 'id' doesn't have a default value
    Mac 挂载树莓派nfs
    树莓派集群实践——nfs
  • 原文地址:https://www.cnblogs.com/flay/p/2329984.html
Copyright © 2011-2022 走看看