1 Mục lục 1 2 Làm quen với visual basic 0 9


Xử lý các tập tin với các dòng lệnh và hàm I/O cổ điển



tải về 1.69 Mb.
trang13/39
Chuyển đổi dữ liệu09.10.2016
Kích1.69 Mb.
#32631
1   ...   9   10   11   12   13   14   15   16   ...   39

7.2Xử lý các tập tin với các dòng lệnh và hàm I/O cổ điển


Mặc dù có FSO, các lệnh cổ điển vẫn được hỗ trợ đầy đủ trong Visual basic. Nếu ta thiết kế ứng dụng để làm việc với cơ sở dữ liệu, ta sẽ không cần cung cấp các truy cập đến tập tin. Điều khiển dữ liệu và ràng buộc dữ liệu cho phép đọc và ghi dữ liệu trực tiếp trên cơ sở dữ liệu, dễ dàng hơn truy cập đến tập tin.

7.2.1Các kiểu truy cập tập tin


Tập tin là một dãy các byte lưu trên đĩa. Khi ứng dụng truy cập đến tập tin, nó xem các byte như là ký tự, bản ghi,số, chuỗi...Có 3 kiểu truy cập tập tin:

  • Tuần tự: đọc và ghi các tập tin văn bản theo cá chuỗi liên tục.

  • Ngẫu nhiên: đọc và ghi tập tin văn bản hoặc nhị phân có cấu trúc theo các bản ghi có chiều dài xác định

  • Nhị phân: đọc và ghi các tập tin có cấu trúc không xác định.

Hàm truy cập tập tin

Hàm/ dòng lệnh

Tuần tự

Ngẫu nhiên

Nhị phân

Close

X

X

X

Get




X

X

Input()

X




X

Input #

X







Line Input #

X







Open

X

X

X

Print #

X







Put




X

X

Type.. End type




X




Write #

X






7.2.1.1Tập tin tuần tự

7.2.1.1.1Mở tập tin tuần tự

Open pathname For | Input | Output | Append | As filenumber | Len = buffersize|

Khi mở một tập tin tuần tự với Input, tập tin phải có sẵn. Nếu không Visual basic sẽ báo lỗi. Khi ta mở một tập tin chưa có sẵn với Output hoặc Append lệnh Open sẽ tạo mới tập tin và mở nó.

Tham số tuỳ chọn Len chỉ ra số ký tự trong vùng đệm khi sao chép dữ liệu giữa tập tin và chương trình.

Sau khi mở tập tin với Input, Output hoặc Append ta phải đóng nó bằng lệnh Close.


7.2.1.1.2Soạn thảo tập tin

Trước hết, đọc nội dung tập tin vào biến, sửa biến và ghi biến vào tập tin.

Đọc chuỗi từ tập tin

Mở tập tin với Input. Sau đó, dùng dòng lệnh line Input #, Input() hoặc Input # để sao chép nội dung tập tin vào biến. Visual basic cung cấp những hàm để đọc ghi 1 ký tự hoặc một dòng vào tập tin. Đoạn code sau đọc từng dòng:

Dim LinesFromFile, NextLine As String

Do Until EOF(FileNum)

Line Input #FileNum, NextLine

LinesFromFile = LinesFromFile + NextLine + Chr(13) + Chr(10)

Loop

Mặc dù Line Input# nhận ra cuối chuỗi khi nó đọc đến ký tự xuống dòng, nhưng nó không lấy ký tự này khi đưa và biến. Nếu muốn lấy ký tự xuống dòng ta phải tự xử lý code.



Ta cũng có thể dùng Input # để đọc một danh sách gồm các số hay chuỗi trong tập tin. Ví dụ, để đọc một dòng trong tập tin danh sách thư điện tử:

Input #filename, name, street, city,state,zip

Dùng Input để sao chép một số ký tự từ tập tin vào biến:

LinesFromFile = Input(n, Filename)

Để copy toàn bộ tập tin vào biến, dùng InputB để copy từng byte. Vì InputB trả về chuỗi ANSI, ta phải dùng StrConv để chuyển đổi từ ANSI sang UNICODE.

LinesFromFile= StrConv(InputB(LOF(FileNum), FileNum), vbUnicode)



Ghi chuỗi và tập tin

Để ghi nội dung biến vào tập tin, mở tập tin với Output hay Append, sau đó dùng Print #. Ví dụ, tình soạn thảo văn bản copy nội dung của hộp văn bản vào tập tin:

Print #FileNum, Thebox.text

Visual basic cũng hỗ trợ lệnh Write #, dùng để ghi một danh sách các số, chuỗi vào tập tin. Dấu phẩy được dùng để tách biệt:

Dim strString as String, intNumber as Integer

strString = “AnyCharacters”

intNumber = 23456

Write #Filenum, strString, intNumber

Đoạn code này ghi một chuỗi và một số vào một tập tin được chỉ ra bởi FileNum.

7.2.1.2Tập tin ngẫu nhiên


Mô hình FSO không hỗ trợ tập tin ngẫu nhiên. Các byte trong tập tin truy cập ngẫu nhiên có dạng bản ghi đồng nhất, mỗi bản ghi chứa một hoặc nhiều trường. Mỗi trường có kiểu và kích thước xác định. Mỗi bản ghi có nhiều trường tương đương kiểu người dùng định nghĩa. Ví dụ: Kiểu worker tạo mẫu tin 19 bytes gồm 3 trường:

Type worker

LastName As String *10

Tilte As String * 7

Rank As String *2

End Type


Sau khi định nghĩa kiểu mẫu tin, khai báo các biến mà ứng dụng cần để xử lý 1 tập tin mở để truy cập ngẫu nhiên:

Public Employee as worker


7.2.1.2.1Mở tập tin ngẫu nhiên

Open pathname [ For Random ] As filenumber Len = reclength

Vì Random là kiểu mặc định từ khoá For random là tuỳ chọn.

Biểu thức Len = reclength chỉ ra kích thước tính bằng byte của một bản ghi. Lưu ý rằng mỗi biển chuỗi trong Visual basic chứa một chuỗi Unicode và ta phải chỉ ra chiều dài tính bằng byte của chuỗi đó. Nếu reclength nhỏ hơn chiều dài thực sự của bản ghi ghi đến tập tin, lỗi sé sinh ra. Nếu reclength lớn hơn chiều dài thực sự của bản ghi, bản ghi sẽ được ghi, mặc dù một số khoảng trống đĩa bị lãng phí.

7.2.1.3Tập tin truy cập nhị phân


Trong mô hình FSO không hỗ trợ tập tin này. Dùng tập tin nhị phân khi yêu cầu kích thước tập tin nhỏ. Khi thao tác nên dùng biến byte thay vì String, vì dữ liệu nhị phân không thể chứa đúng vào biến String.
7.2.1.3.1Mở tập tin nhị phân

Cú pháp lệnh:

Open pathname For Binary As filenumber
7.2.1.3.2Chứa thông tin trong các trường hợp có độ dài thay đổi

Ta có thể giảm thiểu việc sử dụng khoảng trống đĩa bằng tập tin nhị phân.

Type Person

ID As Integer

MonthlySalary As Currency

LastReviewDate As Long

FirstName As String

LastName As String

Tilte As String

End Type

Public Empl As Person

Mỗi bản ghi chỉ chứa một số byte cần thiết do các trường có chiều dài biến đổi. Trở ngại là ta không thể truy cập bản ghi một cách ngẫu nhiên, mà ta phải truy cập tuần tự theo độ dài của mỗi bản ghi. ta có thể tìm một byte trong tập tin, ngưng không thể biết byte đó thuộc bản ghi nào.



tải về 1.69 Mb.

Chia sẻ với bạn bè của bạn:
1   ...   9   10   11   12   13   14   15   16   ...   39




Cơ sở dữ liệu được bảo vệ bởi bản quyền ©hocday.com 2024
được sử dụng cho việc quản lý

    Quê hương