CAFE

[6.0]강좌게시판

[6.0]FreeFile() 함수 (보충설명: Reset 함수)

작성자whitebono|작성시간08.07.12|조회수1,251 목록 댓글 7

 

 FreeFIle(): Open의 #FileNumber에서 쓸수있는, 값 중 가장 작은 값을 반환하는 함수.

 

 사용의 예.

 

 Dim FileNum As Integer

 FileNum = FreeFile

 Open "C:\MyTxt.Txt" For Output As #FileNum

     Print #FileNum, "파일 쓰기 테스트입니다."

 Close #FileNum

 

 위와 같이 활용할 수 있습니다.

 

 또, 우리는 이 함수와 똑같은 함수를 만들 수 있습니다.

 

 FileNumber는 1~512의 범위이고, 파일 처리 함수에서 잘못된 번호가 들어오면 오류를 반환하므로..

 

Function MyFreeFile() As Integer
    On Local Error Resume Next
    Dim i As Integer
    For i = 1 To 512
        Loc i ' LOC() 함수는 파일 번호에 대한 현재 위치를 숫자로 반환하는 함수
        If Err = 52 Then
            Err.Clear
            MyFreeFile = i
            Exit Function
        Else
            If Err Then Err.Clear
        End If
    Next
End Function

 

위와 같이 작성할 수 있을것입니다.

 

 

P.S: 그렇다면 열린 파일 핸들을 모두 닫고싶을 땐 어떻게 해야할까요?

 

Reset 이라는 함수를 쓰면됩니다. VB는 열려진 파일 번호을 관리하기 때문에 가능한것이지요.

(C/C++였으면 파일 핸들을 구하기 위해 ZwQuerySystemInformation 노가다를 했을듯..)

 

그렇다면 이 Reset도 구현할 수 있을까요?

 

네. 가능합니다. :)

 

Sub MyReset()

    On Local Error Resume Next
    Dim i As Integer
    For i = 1 To 512
        Close #i
    Next

    If Err Then Err.Clear
End Sub

 

작성자 : 수학쟁이(NAVER)

다음검색
현재 게시글 추가 기능 열기

댓글

댓글 리스트
  • 작성자해피고깅 | 작성시간 09.01.04 이게 초급자가하는겁니까 ㅠㅠ
  • 작성자김영태 | 작성시간 09.03.06 Reset => Cloes 하나로 해결됩.. MSDN에 보면 Close [filenumberlist] , filenumberlist를 생략하면 Open 문으로 연 활성 파일이 모두 닫힙니다.
  • 작성자바 람남 | 작성시간 10.12.27 잘봣습니다~
  • 작성자이화 | 작성시간 13.12.25 어려우다
  • 작성자myunam | 작성시간 16.08.08 김사
댓글 전체보기
맨위로

카페 검색

카페 검색어 입력폼