delphiテキストレコードストリーム読み書きファイル

10786 ワード

unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;

type
  TForm1 = class(TForm)
    btn1: TButton;
    edt1: TEdit;
    edt2: TEdit;
    btn2: TButton;
    btn3: TButton;
    btn4: TButton;
    btn5: TButton;
    procedure btn1Click(Sender: TObject);
    procedure btn2Click(Sender: TObject);
    procedure btn3Click(Sender: TObject);
    procedure btn4Click(Sender: TObject);
    procedure btn5Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}


//     
procedure TForm1.btn1Click(Sender: TObject);
var
  f:TextFile;
  s:string;
begin
  AssignFile(f,'a.txt');
  try
    //if FileExists('a.txt') then
//      Append(f)
//    else
      Rewrite(f);

    Writeln(f,edt1.Text,'---',edt2.Text);

    ////////////
    Reset(f);
    Readln(f,s);
    edt2.Text:= s;
  finally
    CloseFile(f);
  end;
end;

//   
procedure TForm1.btn2Click(Sender: TObject);
type
 student=record
  sNo:string[10];
  sName:string[10];
 end;
var
  f:File of student;
  stu:student;
  isize:Integer;
begin
  AssignFile(f,'a.dat');
  try
    if not FileExists('a.dat') then
      Rewrite(f)
    else
      Reset(f);
    isize:= FileSize(f);
    Seek(f,isize);
    stu.sNo:= edt1.Text;
    stu.sName:= edt2.Text;
    Write(f,stu);
  finally
    CloseFile(f);
  end;
end;

//   
procedure TForm1.btn3Click(Sender: TObject);
type
 student=record
  sNo:string[10];
  sName:string[10];
 end;
var
  f:File of student;
  stu:student;
  isize:Integer;
begin
  AssignFile(f,'a.dat');
  try
    if not FileExists('a.dat') then
      Rewrite(f)
    else
      Reset(f);
    Seek(f,1);//   , 
    read(f,stu);
    edt1.Text:=stu.sNo;
    edt2.Text:=stu.sName;
  finally
    CloseFile(f);
  end;
end;

// 
procedure TForm1.btn4Click(Sender: TObject);
type
  TBuffer = array [0..160]of char;
var
   FileStream: TFileStream;
   tempBuffer:TBuffer;
begin
   StrPcopy(tempBuffer,edt1.Text);
   Filestream:=TFileStream.Create('a.file',fmCreate);
   FileStream.Position:=0;
   FileStream.Write(tempBuffer,length(tempBuffer));
   FreeAndNil(FileStream);
end;

// 
procedure TForm1.btn5Click(Sender: TObject);
type
  TBuffer = array [0..160]of char;
var
  FileStream: TFileStream;
  ABuffer: TBuffer;
begin
   Filestream:=TFileStream.Create('a.file',fmOpenRead);
   Filestream.Position:=0;
   FileStream.Read(ABuffer,sizeof(ABuffer));
   edt2.Text:= abuffer;
   FreeAndNil(FileStream);
end;


end.