rand(life)
[vba] 텍스트 파일을 다룰 때 왜 freefile을 쓰는가? 본문
텍스트파일의 내용을 한 줄씩 읽어, 문자열을 탭을 기준으로 분리하여 배열변수에 넣기 위한 코드이다.
Dim str As String
Dim arr()
Dim ifn As Long
ifn = FreeFile
Open fname For Input As #ifn
Do Until EOF(ifn)
Line Input #ifn, str
arr = Split(str, vbTab)
Loop
여기서 Freefile이라는 함수를 사용해서 ifn에 숫자를 할당하는데, 왜 이런 작업을 해야하는가는 질문에 대한 대답이다.
쉬운 예를 들어 보죠.
철수, 영희가 있는데 좌석번호를 항상 철수에게는 1번, 영희에게는 2번을 준다고 하면 좌석이 비어있는 경우에는 아무런 문제가 발생하지 않습니다.
하지만, 다른 누군가가 1번 좌석을 점유한 상태라면 철수에게 1번을 줄 수 없겠죠.
이 경우 앞 번호부터 검색해서 빈 좌석 번호를 알려주는 장치가 있다면 철수나 영희에게 그 번호를 주면 간단히 해결이 되겠죠.
Open
문에서도 마찬가지입니다. 열려 있는 텍스트파일을 구분하여 컨트롤하기 위해 번호(#filenumber)를 부여하는데, Open
문이 한 번만 실행되는 상황에서는 문제가 없지만 여러 파일이 열리고 중간에 일부 파일은 닫히고 하는 상황이 있다보면 위 예와 같은
문제가 발생할 수 있습니다.
이 때 빈 번호를 반환하는 FreeFile 함수의 도움을 받으면 어떤 번호가 비어있는지 신경쓰지 않아도 자동 해결이 됩니다.
이런 기능을 하기 위해 FreeFile 함수를 사용합니다.
파일번호를 붙여야 하는 이유는 그냥 운영체제를 그렇게 만들었기 때문입니다.이런 파일번호가 없이 파일이름만으로 쓰기 가능하게 만들 수도 있었겠죠. 그러나