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