Delphi 텍스트 읽기 및 쓰기 파일
43010 단어 Delphi
선언: Delphi는 텍스트 파일, 레코드 파일, 유형 없는 세 가지 파일 유형을 지원합니다.텍스트 파일은 비헤이비어 단위로 읽기, 쓰기됩니다.각 줄의 길이가 반드시 같지 않기 때문에 주어진 줄이 파일의 정확한 위치를 계산할 수 없기 때문에 순서대로 읽기와 쓰기만 할 수 있다.텍스트 파일은 읽기나 쓰기만 할 수 있으며, 열린 텍스트 파일에서 읽기와 쓰기를 동시에 할 수 없습니다.텍스트 파일을 열려면 다음 두 단계가 필요합니다. 1.파일 변수는 파일 이름과 연결됩니다.2. 읽기와 쓰기를 초기화합니다.1. 파일 변수가 파일 이름과 연관됨: AssignFile(VarTxt, FileName);FileName 경로를 생략하면 현재 디렉토리가 기본값으로 설정됩니다.2. 읽기와 쓰기를 초기화하는 데는 세 가지 방법이 있다. (1) Reset: 읽기만 하고 열면 바늘을 파일 헤더로 옮긴다.(2) Rewrite: 새 파일을 만들고 열고 쓰기만 합니다.(3) Append: 끝에서 추가되며 포인터는 당연히 파일 끝에 있습니다.파일이 존재하지 않을 때 Reset 또는 Append를 사용하면 입출력 예외가 발생합니다.마지막으로 CloseFile을 사용하여 파일을 닫습니다.Delphi는 호환성을 유지하기 위해 Assign을 사용하여 연관을 설정하고 Close를 사용하여 파일을 닫을 수도 있습니다.
// :
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}
var
F: Text; //TextFile Text
FileName: string = 'c:/temp/test.txt';
//
procedure TForm1.Button1Click(Sender: TObject);
begin
AssignFile(F,FileName);
Rewrite(F); //
Writeln(F, ' ');
Writeln(F, ' ');
CloseFile(F);
end;
// ( )
procedure TForm1.Button2Click(Sender: TObject);
var
s: string;
begin
AssignFile(F,FileName);
Reset(F); //
Readln(F, s); //
ShowMessage(s); // :
Readln(F, s); //
ShowMessage(s); // :
CloseFile(F);
end;
//
procedure TForm1.Button3Click(Sender: TObject);
begin
AssignFile(F,FileName);
Append(F); //
Writeln(F, ' ');
Writeln(F, ' ');
CloseFile(F);
end;
// ( Memo )
procedure TForm1.Button4Click(Sender: TObject);
var
s: string;
begin
AssignFile(F,FileName);
Reset(F); //
Memo1.Clear;
while not Eof(F) do
begin
Readln(F, s);
Memo1.Lines.Add(s);
end;
CloseFile(F);
end;
//
procedure TForm1.Button5Click(Sender: TObject);
// : s n
function AddSpace(s: string; n: Word): string;
begin
while Length(s) < n do
begin
s := s + ' ';
end;
Result := s;
end;
var
name: string[8];
address: string[16];
begin
AssignFile(F, FileName);
Rewrite(F);
name := ' ';
name := AddSpace(name,8);
address := ' ';
address := AddSpace(address,16);
Writeln(F, name, address);
name := ' ';
name := AddSpace(name,8);
address := ' ';
address := AddSpace(address,16);
Writeln(F, name, address);
name := ' ';
name := AddSpace(name,8);
address := ' ';
address := AddSpace(address,16);
Writeln(F, name, address);
CloseFile(F);
{ :
}
end;
//
procedure TForm1.Button6Click(Sender: TObject);
var
name: string[8];
address: string[16];
begin
AssignFile(F, FileName);
Reset(F);
Memo1.Clear;
while not Eof(F) do
begin
Readln(F, name);
Memo1.Lines.Add(name);
end;
CloseFile(F);
Reset(F);
while not Eof(F) do
begin
Readln(F, name, address);
Memo1.Lines.Add(address);
end;
CloseFile(F);
{ :
}
end;
//
procedure TForm1.Button7Click(Sender: TObject);
var
name: string[6];
age: Word;
birthday: TDate;
begin
AssignFile(F,FileName);
Rewrite(F);
name := ' '; // 6
age := 18;
birthday := StrToDate(DateToStr(Now-18*365)); //
Writeln(F,name,age,birthday);
CloseFile(F);
Reset(F);
Readln(F,name,age,birthday);
Memo1.Clear;
Memo1.Lines.Add(name);
Memo1.Lines.Add(IntToStr(age));
Memo1.Lines.Add(DateToStr(birthday));
CloseFile(F);
{ :
18
1989-12-23
}
// , ?
end;
end.
구조화된 파일 액세스
개요: AssignFile: Rewrite 연결: 새 파일을 만들고 엽니다. 존재하는 경우 Reset: 존재하는 파일을 덮어씁니다.추가도 그것으로 먼저 열고 바늘을 움직여야 한다.Append는 텍스트 파일 전용의 CloseFile: FileSize 닫기: 기록수 FilePos: 파일의 현재 위치를 되돌려줍니다 Seek: 파일 포인터를 지정한 위치로 이동합니다 (구조화된 파일에만 사용) Eof: 파일 끝 Read: 읽기 Write: 쓰기: 긴 문자열, 변수, 클래스 실례, 인터페이스 또는 동적 그룹을 포함하는 기록은 형식 파일에 쓸 수 없습니다!// :
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;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
type
TPersonRec = packed record
name: string[12];
age: Word;
birthday: TDate;
end; //
var
DataFile: file of TPersonRec; // DataFile TPersonRec
PersonRec: TPersonRec; //
FileName: string = 'c:/temp/test.dat'; //
//
procedure TForm1.Button1Click(Sender: TObject);
begin
AssignFile(DataFile,FileName); //
Rewrite(DataFile); // ,
PersonRec.name := ' ';
PersonRec.age := 18;
PersonRec.birthday := StrToDate('1990-1-1');
Write(DataFile,PersonRec); //
PersonRec.name := ' ';
PersonRec.age := 81;
PersonRec.birthday := StrToDate('1927-11-11');
Write(DataFile,PersonRec); //
CloseFile(DataFile); //
end;
//
procedure TForm1.Button2Click(Sender: TObject);
begin
AssignFile(DataFile,FileName);
Reset(DataFile); //Append
Seek(DataFile,FileSize(DataFile)); // , FileSize
PersonRec.name := ' ';
PersonRec.age := 1;
PersonRec.birthday := StrToDate('2006-12-19');
Write(DataFile,PersonRec);
PersonRec.name := ' ';
PersonRec.age := 2000;
PersonRec.birthday := StrToDate('0007-7-7');
Write(DataFile,PersonRec);
CloseFile(DataFile);
end;
// ( Memo )
procedure TForm1.Button3Click(Sender: TObject);
begin
AssignFile(DataFile,FileName);
Reset(DataFile);
Memo1.Clear;
Read(DataFile,PersonRec); // ,
Memo1.Lines.Add(PersonRec.name);
Memo1.Lines.Add(IntToStr(PersonRec.age));
Memo1.Lines.Add(DateToStr(PersonRec.birthday));
Read(DataFile,PersonRec); //
Memo1.Lines.Add(PersonRec.name);
Memo1.Lines.Add(IntToStr(PersonRec.age));
Memo1.Lines.Add(DateToStr(PersonRec.birthday));
Seek(DataFile,FileSize(DataFile)-1); //
Read(DataFile,PersonRec);
Memo1.Lines.Add(PersonRec.name);
Memo1.Lines.Add(IntToStr(PersonRec.age));
Memo1.Lines.Add(DateToStr(PersonRec.birthday));
CloseFile(DataFile);
{ :
18
1990-1-1
81
1927-11-11
2000
0007-7-7
}
end;
//
procedure TForm1.Button4Click(Sender: TObject);
begin
AssignFile(DataFile,FileName);
Reset(DataFile);
Seek(DataFile,3); //
Read(DataFile,PersonRec); //
PersonRec.age := 0;
PersonRec.birthday := StrToDate('2007-10-24');
Seek(DataFile,3); //
Write(DataFile,PersonRec); //
CloseFile(DataFile);
end;
//
procedure TForm1.Button5Click(Sender: TObject);
begin
AssignFile(DataFile,FileName);
Reset(DataFile);
Memo1.Clear;
while not Eof(DataFile) do
begin
Memo1.Lines.Add(' ' + IntToStr(FilePos(DataFile)+1) + ' :');
Read(DataFile,PersonRec);
Memo1.Lines.Add(PersonRec.name);
Memo1.Lines.Add(IntToStr(PersonRec.age));
Memo1.Lines.Add(DateToStr(PersonRec.birthday));
Memo1.Lines.Add(''); //
end;
CloseFile(DataFile);
{ :
1 :
18
1990-1-1
2 :
81
1927-11-11
3 :
1
2006-12-19
4 :
0
2007-10-24
}
end;
end.
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.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[Delphi] TStringBuilder그리고 꼭 사용해야만 할까? 그림처럼 Heap 영역에 "Hello" 공간을 생성하고 포인팅을 한다. "Hello World" 공간을 새로 생성한 후 포인팅을 하게 된다. 결국 "Hello" 라는 String 객체가 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.