형식 파일 읽기와 쓰기 없음
4919 단어 파일 읽기와 쓰기
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.