형식 파일 읽기와 쓰기 없음


unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Memo1: TMemo;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    Button5: TButton;
    Button6: TButton;
    Button7: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
    procedure Button7Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

const
  FileName = 'c:\temp\binary.dat';
var
  F: file;

//             
procedure TForm1.Button1Click(Sender: TObject);
var
  b: Byte;
begin
  AssignFile(F,FileName);
  Rewrite(F,1); //       :   1            

  b := 65;
  BlockWrite(F,b,1); //  ;   2       ;   3     1  .

  CloseFile(F);
//   binary.dat    : 1   ;   : A (       )
end;


//             
procedure TForm1.Button2Click(Sender: TObject);
var
  b: Byte;
begin
  AssignFile(F,FileName);
  Reset(F,1); //  1            

  BlockRead(F,b,1); //    ;    b
  ShowMessage(Chr(b)); //A

  CloseFile(F);
end;


//      
procedure TForm1.Button3Click(Sender: TObject);
var
  buffer: array[0..127] of Byte;
  i: Integer; //      ,       
begin
  for i := Low(buffer) to High(buffer) do
    buffer[i] := i; //     ,           128

  AssignFile(F,FileName);
  Rewrite(F,32); //    32            ,                    

  BlockWrite(F,buffer,4); //       ? 128/32=4

  CloseFile(F);
//        128    ,           ,            
end;


//  
procedure TForm1.Button4Click(Sender: TObject);
var
  buffer: array[0..127] of Byte;
  i: Integer;
begin
  AssignFile(F,FileName);
  Reset(F,4); //  4           ;         ,       1

  BlockRead(F,buffer,32); //     32      

  CloseFile(F);

  //       ?     Memo  ;     ?   ?        
  Memo1.Clear;
  for i := Low(buffer) to High(buffer) do
  begin
    Memo1.Lines.Add(IntToHex(buffer[i],1));
  end;
(*    : 0 1 2 3 ... 7D 7E 7F *)

end;


//   Char        
procedure TForm1.Button5Click(Sender: TObject);
var
  cArr1,cArr2: array[0..4] of Char;
  i: Integer;
  num: Integer; //          
begin
  for i := Low(cArr1) to High(cArr1) do
    cArr1[i] := Chr(65+i); //   A B C D E

  AssignFile(F,FileName);
  Rewrite(F,1); //  

  BlockWrite(F,cArr1,Length(cArr1),num); //  4: num          
  ShowMessage(IntToStr(num)); //5

  Reset(F,1); //    

  BlockRead(F,cArr2,Length(cArr2),num); //  5: num          
  ShowMessage(IntToStr(num)); //5

  ShowMessage(cArr2); //ABCDE

  CloseFile(F);
end;


//      ,         
procedure TForm1.Button6Click(Sender: TObject);
var
  p: PChar;
  b: Byte;
begin
  p := '    Delphi   ';

  AssignFile(F,FileName);     //     
  Rewrite(F,1);               //     
  BlockWrite(F,p,Length(p));  //  


  FileMode := fmOpenRead;     //          
  Reset(F,1);                 //     

  Memo1.Clear;
  while not Eof(F) do
  begin
    BlockRead(F,b,1);
    Memo1.Text := Memo1.Text + IntToHex(b,2) + ' ';
  end;
  //    : 70 F0 45 00 08 F7 12 00 A6 FB 43 00 A0 1A E5 00 FF C5

  CloseFile(F);
end;


//     
procedure TForm1.Button7Click(Sender: TObject);
var
  FromF,ToF: file;
  NumRead,NumWritten: Integer;
  Buffer: array[1..2048] of Byte;
begin
  AssignFile(FromF, 'c:\temp\test1.dat'); //       
  Reset(FromF, 1);
  AssignFile(ToF, 'c:\temp\test2.dat');
  Rewrite(ToF, 1);

  repeat
    BlockRead(FromF, Buffer, SizeOf(Buffer), NumRead);
    BlockWrite(ToF, Buffer, NumRead, NumWritten);
  until (NumRead = 0) or (NumWritten <> NumRead);
  { NumRead=0      ; NumWritten <> NumRead           }

  CloseFile(FromF);
  CloseFile(ToF);
end;

end.

 

좋은 웹페이지 즐겨찾기