StartprogrammingusingObjectPascal:ReadingTextFileProgram: Difference between revisions
Jump to navigation
Jump to search
Onionmixer (talk | contribs) (SPOP 텍스트파일읽기 페이지 추가) |
Onionmixer (talk | contribs) (번역 및 스타일 수정) |
||
(3 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
===텍스트 파일 읽기=== | ===텍스트 파일 읽기 프로그램=== | ||
<syntaxhighlight lang="pascal"> | <syntaxhighlight lang="pascal"> | ||
Line 42: | Line 40: | ||
end. | end. | ||
</syntaxhighlight> | </syntaxhighlight> | ||
리눅스에서는 다음 파일 이름을 입력할 수 있습니다. | 리눅스에서는 다음 파일 이름을 입력할 수 있습니다. | ||
<syntaxhighlight lang="c"> | <syntaxhighlight lang="c"> | ||
/etc/resolv.conf | /etc/resolv.conf | ||
</syntaxhighlight> | </syntaxhighlight> | ||
또는 | |||
또는 다음 파일 이름을 입력할 수 있습니다. | |||
<syntaxhighlight lang="c"> | <syntaxhighlight lang="c"> | ||
/proc/meminfo | /proc/meminfo | ||
Line 54: | Line 56: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
텍스트 파일을 다루기 위해 새로운 형식과 함수, 프로시저를 사용했는데, | |||
<syntaxhighlight lang="pascal"> | |||
# <syntaxhighlight lang="pascal"> | |||
F: TextFile; | F: TextFile; | ||
</syntaxhighlight> | </syntaxhighlight> ''TextFile'' 은 텍스트 파일 변수를 선언하기 위해 사용하는 형식입니다. 이 변수는 다음의 사용을 위해 텍스트 파일에 연결할 수 있습니다. | ||
''TextFile''은 텍스트 파일 변수를 선언하기 위해 사용하는 형식입니다. | # <syntaxhighlight lang="pascal"> | ||
<syntaxhighlight lang="pascal"> | |||
if FileExists(FileName) then | if FileExists(FileName) then | ||
</syntaxhighlight> | </syntaxhighlight> ''FileExists'' 는 ''SysUtils'' 유닛에 들어있는 함수입니다. 파일의 존재를 확인합니다. 저장 매체에 파일이 존재하는 경우 ''True'' 를 되돌립니다. | ||
''FileExists''는 ''SysUtils''유닛에 들어있는 함수입니다. 파일의 존재를 확인합니다. 저장 매체에 파일이 존재하는 경우 ''True''를 되돌립니다. | # <syntaxhighlight lang="pascal"> | ||
<syntaxhighlight lang="pascal"> | |||
AssignFile(F, FileName); | AssignFile(F, FileName); | ||
</syntaxhighlight> | </syntaxhighlight> 파일의 존재를 확인한 다음에는, 파일 변수(''F'')에 실제 파일을 연결하기 위해 ''AssignFile'' 프로시저를 사용할 수 있습니다. ''F'' 변수에 대한 사용방법은 변수가 가리키는 실제 파일에 따라 다를 수 있습니다. | ||
파일의 존재를 확인한 다음에는, 파일 변수(''F'')에 실제 파일을 연결하기 위해 ''AssignFile'' 프로시저를 사용할 수 있습니다. ''F'' | # <syntaxhighlight lang="pascal"> | ||
Reset(F); // put file mode for read, file should exist | |||
</syntaxhighlight> ''Reset'' 프로시저는 텍스트 파일을 읽기 전용으로 읽어들이고 파일의 첫번째 문자에 읽기 포인터를 위치합니다. 만약 현재 사용자에게 파일의 읽기 권한이 없다면, ''접근 거부(ACCESS DENIED)''와 같은 오류 메시지가 나타날 것입니다. | |||
# <syntaxhighlight lang="pascal"> | |||
Readln(F, Line); // read a line from text file | |||
</syntaxhighlight> ''Readln'' 프로시저는 파일로부터 완전한 줄을 읽어들여 변수 ''Line''에 넣기위해 사용합니다. 텍스트 파일로부터 줄을 읽기 전에 파일의 끝에 도달했는지 확인할 것입니다. 여기서 다음 함수 ''Eof''를 통해 이를 해결할 수 있습니다. | |||
# <syntaxhighlight lang="pascal"> | |||
while not Eof(F) do | |||
</syntaxhighlight> ''Eof'' 함수는 파일의 끝에 도달했을 경우 ''True'' 를 반환합니다. Read 처리를 더 이상 사용할 수 없고 파일의 내용을 다 읽었다는 상태를 나타낼 때 사용합니다. | |||
# <syntaxhighlight lang="pascal"> | |||
CloseFile(F); // release f and filename connection | |||
</syntaxhighlight> 파일로부터 읽거나 기록하는 동작이 끝나면, 파일을 닫아 릴리스 해야 하는데, ''Reset'' 프로시저가 운영체제로부터 파일을 선점하고 있으며, 파일이 열려있는 동안 다른 프로그램이 기록하거나 지우는 것을 막고 있기 때문입니다. | |||
파일을 여는 중에 ''Reset'' 프로시저의 동작을 성공적으로 수행했을 때, ''CloseFile'' 을 사용할 것입니다. 만약 ''Reset'' 이 실패(예를 들어, 파일이 존재하지 않거나 다른 프로그램이 파일을 사용하고 있다면)하면 이런 경우 파일을 닫지 않습니다. | |||
'' | |||
다음 예제에서는 새로운 텍스트 파일을 만들고 임의의 텍스트를 넣어보겠습니다. | |||
[[Category:StartprogrammingusingObjectPascal]] | [[Category:StartprogrammingusingObjectPascal]] |
Latest revision as of 09:55, 4 April 2013
텍스트 파일 읽기 프로그램
Program ReadFile;
{$mode objfpc}{$H+}
uses
{$IFDEF UNIX}{$IFDEF UseCThreads}
cthreads,
{$ENDIF}{$ENDIF}
Classes, SysUtils
{ you can add units after this };
var
FileName: string;
F: TextFile;
Line: string;
begin
Write('Input a text file name: ');
Readln(FileName);
if FileExists(FileName) then
begin
// Link file variable (F) with physical file (FileName)
AssignFile(F, FileName);
Reset(F); // Put file mode for read, file should exist
// while file has more lines that does not read yet do the loop
while not Eof(F) do
begin
Readln(F, Line); // Read a line from text file
Writeln(Line); // Display this line in user screen
end;
CloseFile(F); // Release F and FileName connection
end
else // else if FileExists..
Writeln('File does not exist');
Write('Press enter key to close..');
Readln;
end.
리눅스에서는 다음 파일 이름을 입력할 수 있습니다.
/etc/resolv.conf
또는 다음 파일 이름을 입력할 수 있습니다.
/proc/meminfo
/proc/cpuinfo
텍스트 파일을 다루기 위해 새로운 형식과 함수, 프로시저를 사용했는데,
- TextFile 은 텍스트 파일 변수를 선언하기 위해 사용하는 형식입니다. 이 변수는 다음의 사용을 위해 텍스트 파일에 연결할 수 있습니다.
F: TextFile;
- FileExists 는 SysUtils 유닛에 들어있는 함수입니다. 파일의 존재를 확인합니다. 저장 매체에 파일이 존재하는 경우 True 를 되돌립니다.
if FileExists(FileName) then
- 파일의 존재를 확인한 다음에는, 파일 변수(F)에 실제 파일을 연결하기 위해 AssignFile 프로시저를 사용할 수 있습니다. F 변수에 대한 사용방법은 변수가 가리키는 실제 파일에 따라 다를 수 있습니다.
AssignFile(F, FileName);
- Reset 프로시저는 텍스트 파일을 읽기 전용으로 읽어들이고 파일의 첫번째 문자에 읽기 포인터를 위치합니다. 만약 현재 사용자에게 파일의 읽기 권한이 없다면, 접근 거부(ACCESS DENIED)와 같은 오류 메시지가 나타날 것입니다.
Reset(F); // put file mode for read, file should exist
- Readln 프로시저는 파일로부터 완전한 줄을 읽어들여 변수 Line에 넣기위해 사용합니다. 텍스트 파일로부터 줄을 읽기 전에 파일의 끝에 도달했는지 확인할 것입니다. 여기서 다음 함수 Eof를 통해 이를 해결할 수 있습니다.
Readln(F, Line); // read a line from text file
- Eof 함수는 파일의 끝에 도달했을 경우 True 를 반환합니다. Read 처리를 더 이상 사용할 수 없고 파일의 내용을 다 읽었다는 상태를 나타낼 때 사용합니다.
while not Eof(F) do
- 파일로부터 읽거나 기록하는 동작이 끝나면, 파일을 닫아 릴리스 해야 하는데, Reset 프로시저가 운영체제로부터 파일을 선점하고 있으며, 파일이 열려있는 동안 다른 프로그램이 기록하거나 지우는 것을 막고 있기 때문입니다.
CloseFile(F); // release f and filename connection
파일을 여는 중에 Reset 프로시저의 동작을 성공적으로 수행했을 때, CloseFile 을 사용할 것입니다. 만약 Reset 이 실패(예를 들어, 파일이 존재하지 않거나 다른 프로그램이 파일을 사용하고 있다면)하면 이런 경우 파일을 닫지 않습니다.
다음 예제에서는 새로운 텍스트 파일을 만들고 임의의 텍스트를 넣어보겠습니다.