我想做个后缀名为.gyj的文件,这个文件的读写存储我老师推荐我用二进制流,我看了关于文件流的东西,还是觉得很难理解。想文本文件,类型文件,无类型文件,我只有文本文件清楚点。其他的都很差。
Delphi5 开发人员指南里12章关于文件存储的源程序我敲了一遍,脑子里还是充满了问号。不是很清楚。
在Menu的File|Open(Save,SaveAs..)等的OnClick事件中如何实现上面的功能呢?(这个问题可以不回答,我下去后自己摸索)。
最好能给点源程序,让我自己看看,看能不能搞明白。衷心谢谢能够解答我问题和顶这个帖子的朋友。

解决方案 »

  1.   

    >>我看了关于文件流的东西,还是觉得很难理解。
    用 Stream 就可, 如TFileStream, TMemoryStream 就可很簡單的實現你要的
      

  2.   

    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;type
      TForm1 = class(TForm)
        btnRead: TButton;
        Memo1: TMemo;
        btnWrite: TButton;
        procedure btnReadClick(Sender: TObject);
        procedure btnWriteClick(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;const
      FileName = 'D:\Wo_315.gyj';
    var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.btnReadClick(Sender: TObject);
    var
      AStream: TMemoryStream;
      Reader: TReader;  TextLength: Integer;
    begin
      Memo1.Clear;  try
        AStream := TMemoryStream.Create;
        AStream.LoadFromFile(FileName);    Reader := TReader.Create(AStream, 1024);
        Reader.Position := 0;    TextLength := Reader.ReadInteger;    Memo1.Text := Reader.ReadString;
      finally
        FreeAndNil(Reader);
        FreeAndNil(AStream);
      end;
    end;procedure TForm1.btnWriteClick(Sender: TObject);
    var
      AStream: TMemoryStream;
      Writer: TWriter;
    begin
      try
        AStream := TMemoryStream.Create;
        Writer := TWriter.Create(AStream, 1024);    Writer.WriteInteger(Length(Memo1.Text));     //这里只是演示一下写Int类型,没有必要写,Writer会自动处理
        Writer.WriteString(Memo1.Text);              //这里只是演示一下写Str类型
        Writer.FlushBuffer;    AStream.SaveToFile(FileName);
      finally
        FreeAndNil(Writer);
        FreeAndNil(AStream);
      end;
    end;end.
      

  3.   

    非常感谢WGYKING(修罗是谁?!)。谢谢!