728x90

다른 언어를 사용한 프로그램도 그렇겠지만, 사용하다보면 따로 기록해야 하거나 그 기록을 불러와야 합니다.

주로 메모장(txt, ini)등을 사용하는 편이 쉽기도 하고 필요한 메모리도 가벼워 선호하는 방식입니다.

외부 파일에 접근하여 내용을 잃거나 쓰는 FileOpen 명령어에 대해서 알아보겠습니다.

 

 

1. Fileopen의 뜻과 접근함수 

 

FileOpen(Filename, Flags , [Encoding]) : 파일을 열어서 특정내용을 읽거나 파일에 새 내용을 기록하는 기능을 지원하는 명령어입니다.

  • Filename : 접근할 파일의 경로 + 이름입니다. 이름만 입력할 경우 지금 메크로가 실행되고 있는 경로인 "A_WorkingDir"에서 파일을 찾습니다.
  • Flags : 파일에 접근하는 방식을 결정합니다. 읽을 때는 "r"(표준입력)을 쓸때는 "w"를 사용합니다.
  • Encoding :파일에 텍스트 입출력에 사용될 코드 페이지입니다.(UTF-8, UTF-16), 입력하지 않으면 A_FileEncoding의 값이 입력되는데 보통 따로 조작하지 않아도 기본 앤코딩 값이 입려되어 있습니다.
  • "변수명" := FileOpen(Filename, Flags , [Encoding])
    형식으로 사용합니다. 한번 파일을 오픈하여 사용하기 위해 메소스를 호출할 때는 변수명으로 사용합니다.

 

접근 모드가 다양하게 지원됩니다.

접근하는 방식은 Flag에 무엇을 입력하냐에 따라 달라집니다.

각 모드에 대해서 알아보겠습니다. 괄호 안()은 십진수와 16진수 표기법입니다.

 

<<접근 모드>>

 

  • r(0, 0x0) : Read를 의미하며 읽기 기능들을 사용할 수 있습니다. 파일이 해당 경로에 없으면 실패합니다.
  • w(1, 0x1) : Write를 의미하며 쓰기 기능들을 사용할 수 있습니다. 파일이 없으면 새로 생성하며, 있을 경우 덮어쓰기 함으로 주의가 필요합니다.
  • a(2, 0x2) : Append를 의미하며 쓰기 기능들을 사용할 수 있습니다. 파일이 없으면 새로 생성하고 있으면 기존 파일의 끝으로 이동합니다.
  • rw(3 0x3) : Read / Write를 의미하며 쓰고 읽는 기능들을 사용할 수 있습니다. 파일이 없으면 새로 생성하고 파일이 있는 경우 내용을 덮어 쓰니 주의가 필요합니다.
  • h : Filename이 객체안에 사용하는 핸들임을 나타내어 길이나 상태를 점검할 수 없고 따라서 Close가 동작하지 않습니다. 이동하거나 지워질 수 있는 파일에는 사용이 안할 것이 권장됩니다.

 

 

2. File 형식에 사용할 수 있는 매소드

 

예시) ex_file = fileopen("C:\dou", "r)

 

이럴때 변수명 ex_file은 파일객체가 되며, FlieOpen로 호출된 파일객체는 쓰고 읽기 위한 인터페이스가 제공됩니다.

인터페이스를 사용하면 문서작업을 직접할 때와 마찬가지로 파일을 쓰고 읽을 때 포인터가 돌아다니게 됩니다.

 

방금쓴 글자 뒤에 포인터가 위치합니다.

 

파일을 오픈하면 파일의 가장 처음에 포인터가 있습니다.

기능들을 한번에 여러개 사용할 경우에는 포인터가 옮겨진 위치를 유의하면서 사용해야 합니다.

 

<<메소드>>

 

  • Read : 지금 포인터 위치에 뒤에서 부터 파일에 내용을 읽습니다. 다 읽고나서 그 뒤문자로 포인터가 이동하는데 이 경우는 맨 마지막이 됩니다.
  • ReadLine : 지금 포인터 위에서 뒤에 있는 문자열을 한줄 읽어입니다. 사용한 후에는 포인터가 다음으로 합니다.
  • Write : 지금 포인터 위치에서 내용을 쓰고 포인터는 내용의 뒤로 이동합니다.
  • WriteLine : 지금 포인터 위치 다음 줄에 내용을 쓰고 포인터는 내용의 뒤로 이동합니다
  • Seek : 포인터가 해당 숫자 만큼 이동합니다.

 

320x100

 

 

3. 사용 예시

 

바탕화면에 있는 LIST.txt의 내용을 읽어 오는 예시를 작성하겠습니다.

 

 

^F3:: ;Ctrl + F3 키를 단축키로 설정했습니다.

file := FileOpen("C:\Users\jong\Desktop\LIST.txt", "r") ;경로의 파일을 읽기로 열었습니다.

newstr := file.Readline() ; 첫 줄의 내용을 newstr1 에 입력합니다.
newstr2 := file.Read() ; 그 뒤에 내용을 newstr 에 입력합니다.

msgbox, %newstr% `n`n %newstr2%

file.close ;파일을 닫았습니다.

 

 

결과는 MSGBOX로 출력했습니다. 

원본 파일에서 ReadLine으로 첫줄을 불어온 후 Read로 나머지를 불러 왔습니다.

 

 

 

 

 

 

반응형

+ Recent posts