140 likes | 490 Views
9 장 . 비주얼 베이직 파일 시스템. 1. 파일 다루기. 비주얼 베이직에서 제공하는 파일 액세스 방식 순차 방식 순차적으로 텍스트 파일을 읽거나 저장할 때 사용 랜덤 방식 고정된 길이의 레코드를 읽거나 저장할 때 사용 이진 방식 임의로 구조화되어 있거나 그렇지 않은 파일을 읽거나 저장할 때 사용 파일을 다루는 기본 3 단계 Open 문을 이용하여 액세스 방식에 따라 파일 열기 필요한 함수나 문을 사용하여 파일의 내용을 읽거나 저장 Close 문을 사용하여 열린 파일 닫기. 순차 파일.
E N D
1. 파일 다루기 • 비주얼 베이직에서 제공하는 파일 액세스 방식 • 순차 방식 • 순차적으로 텍스트 파일을 읽거나 저장할 때 사용 • 랜덤 방식 • 고정된 길이의 레코드를 읽거나 저장할 때 사용 • 이진 방식 • 임의로 구조화되어 있거나 그렇지 않은 파일을 읽거나 저장할 때 사용 • 파일을 다루는 기본 3단계 • Open문을 이용하여 액세스 방식에 따라 파일 열기 • 필요한 함수나 문을 사용하여 파일의 내용을 읽거나 저장 • Close 문을 사용하여 열린 파일 닫기
순차 파일 • 파일 내용을 처음부터 차례대로 순차적으로 읽고 쓰기를 하는 파일 형식 • 줄 단위로 파일 처리가 이루어짐 • 단순한 텍스트 문자 형태로 데이터를 저장 • 메모장을 통하여 내용 확인이 가능 • 간단하고 데이터를 처리하기 쉬워서 가장 널리 쓰이는 기본적인 파일 구조 • 순차 파일 사용 순서 • Open 문 사용 파일 열기 • Write 문 또는 Print문 사용 데이터를 파일에 저장 또는 Input 문 사용 파일로부터 데이터 읽기 • Close 문 사용 파일 닫기
순차 파일 –파일 열기 • 프로그램에서 순차 파일을 사용하려면 먼저 파일을 열어야 함 • Open 문의 구문 • 파일명 • 사용하고자 하는 파일이 있는 경로와 파일 이름 지정 • 경로를 생략하고 파일 이름만 입력하면 현재 폴더에 있는 파일을 의미 • 파일 번호 • 열고자 하는 파일 번호를 나타냄 • 파일 번호는 기본적으로 1을 저장하지만 1에서 51까지의 정수 사용 가능 • 프로그래머가 지정하는 것으로 파일에 대해 읽거나 쓸 때 필요 • 파일 번호를 모르는 경우 다음 파일 번호를 알기 위해서는 FreeFile 함수 사용 Open 파일명 for 모드 As #파일번호 [Len=버퍼크기]
순차 파일 –파일 열기 • Len=버퍼크기 • 버퍼란 파일에서 데이터를 읽거나 쓸 때 한번에 사용되는 크기 • 버퍼의 크기가 크면 클수록 파일에서 읽거나 쓰는 속도가 빠름 • 모드: 파일의 사용 목적을 지정하는 옵션 • Input(읽기 전용 모드) • 파일을 읽기 전용으로 열어서 파일의 처음부터 끝까지 데이터를 차례대로 읽기만 가능하고 쓰기는 할 수 없음 • 파일을 중간부터 읽을 수 없으며, 찾고자 하는 파일이 없으면 “파일을 찾을 수 없습니다”라는 오류가 발생되고 프로그램은 종료 • Output(쓰기 전용 모드) • 순차 파일을 열어서 데이터를 처음부터 차례로 입력하고자 할 때 사용
순차 파일 –파일 열기 • 지정한 파일이 존재하지 않을 경우 해당 위치에 새로운 파일을 생성 • 해당 파일이 존재하는 경우 이미 존재하는 파일의 내용은 모두 지워지고 새로운 내용의 파일이 생성됨 • Append(파일 끝에 추가하기 모드) • 해당 파일이 존재하는 경우 해당 파일 끝에 데이터가 추가되므로 기존 파일에 있는 데이터가 보존됨 • 해당 파일이 존재하지 않는 경우 Output 모드와 같이 새로운 파일이 생성됨 • FreeFile() 함수 • - 파일 번호를 자동으로 관리해주는 함수로 이용 가능한 다음 파일의 번호를 반환 • - Dim Num As Integer • Num = FreeFile() • Open “sample.txt” for input as Num • - 많은 파일을 여는 프로그램에서도 그 다음의 파일 번호를 정확하게 반환
순차 파일 –데이터 읽기 • Input # • 가장 일반적인 형식 • 파일 번호의 파일로부터 읽은 내용을 변수 목록에 있는 각각의 변수에 저장 • 캐리지리턴이나 라인피드를 기준으로 읽는다. Input #파일번호, 변수목록 Dim Su1 As Integer Dim Su2 As Integer Open “sample.txt” for Input As #1 Input #1, Su1, Su2 지정된 파일번호로부터 데이터를 2개를 읽어 변수 Su1, Su2에 저장
순차 파일 –데이터 쓰기 • Open 한 파일에 데이터 쓰기 방법 • 출력 목록의 내용을 파일 번호에 해당하는 파일에 기록 • 출력 목록이 여러 개일 경우 컴마(,) 사용 Print #파일번호, 출력 목록 Write #파일번호, 출력 목록 : 출력 목록은 상수나 변수 Dim Su1 As Integer Dim Su2 As Integer Open “sample.txt” for Output As #1 Print #1, Su1, Su2 Open “sample.txt” for Append As #1 Print #1, “Visual Basic” Write #1, “Programming” • 현재 폴더 아래에 “sample.txt”라는 파일이 생성되어 변수 Su1, Su2의 값을 • “sample.txt”파일에 저장 • “sample.txt”파일이 이미 존재하고 있다면 기존의 데이터를 모두 지우고,새로운 파일이 생성되며, 존재하지 않는다면 새로운 파일 하나가 생성됨
순차 파일 –파일 닫기 • 프로그램에서 더 이상 파일을 사용할 필요가 없을 경우에는 반드시 파일을 닫아야 함 Close #파일번호
순차 파일 –예제 App.path 현재 경로를 반환 Private sub cmdNew_Click() Open App.path & "text.txt" For Output As #1 irum = InputBox("이름은 ?", "이름입력") tel = InputBox("전화번호는 ?", "전화번호 입력") Print #1, irum; " "; tel Pic.Print irum; " "; tel Close #1 End sub
순차 파일 –예제 Private sub cmdAppend_Click() Open App.path &"text.txt" For Append As #1 irum = InputBox("이름은 ?", "이름입력") tel = InputBox("전화번호는 ?", "전화번호 입력") Print #1, irum; " "; tel Pic.Print irum; " "; tel Close #1 End sub Private sub cmdPrint_Click() Pic.Cls Pic.Print "------------------------" Pic.Print "파일에 입력된 내용" Open App.path &"text.txt" For Input As #1 Do While Not EOF(1) Input #1, rr Pic.Print rr Loop Close #1 End sub
오류와 디버깅 • 오류의 유형 • 구문 오류(Syntax Error) • 컴퓨터 오류, 문법 오류 • 코드 작성시 구문을 잘못 입력하는 경우에 발생하는 오류 • 예약어를 잘못 쓰거나 구두점을 쓰지 않는 경우, For 문장 없이 Next 문장을 쓰거나, If 예약어를 조건 연산자 없이 쓰는 경우 발생 • 실행 오류(Run-Time Error) • 실행 불가능한 작업을 시도할 때 발생하는 오류 • 접근할 수 없는 개체를 참조하거나 존재하지 않는 파일로부터 데이터를 읽거나 0으로 나누는 등 잘못된 연상을 수행하려고 하는 경우 발생 • 논리 오류(Logic Error) • 가장 발견하기 어려운 오류 • 구문 오류나 실행 오류 없이 프로그램이 실행되지만 예상치 않은 결과를 출력
오류와 디버깅 • 오류 방지 방법 : 도구 → 옵션 • 자동 구문 검사 : 한 문장의 입력을 마칠 때마다 자동으로 문법 검사를 할 것인지를 지정하는 옵션 • 변수 선언 요구 : 반드시 변수를 선언한 후에만 사용할 수 있게 하는 명시적 선언 방식을 지정할 지의 여부를 결정 • 구성원 자동 목록 : 속성/메소드 목록을 자동으로 표시할 것인지의 여부를 결정하는 옵션 • 자동 요약 정보 : 함수와 매개 변수에 대한 정보를 자동으로 표시할 것인지의 여부를 결정하는 옵션 • 자동 데이터 설명 : 프로젝트의 실행을 일시 정지하여 중단 모드가 되었을 때 마우스 포인터를 변수나 속성이 있는 곳에 가져다 놓으면 그 변수나 속성의 값을 표시해 주는 역할을 수행