, : Dấu ngăn c|ch phần nghìn
Khi Form chứa txtEdit thay đổi kích thước (resize) xảy ra sự kiện Form_Resize Đặt lạ
(resize) xảy ra sự kiện Form_Resize. Đặt lại kích thước điều khiển txtEdit bằng kích thước form txtEdit.Width = ScaleWidth txtEdit.Height = ScaleHeight PNH-HUT 265 Chương 9 Xử lý tập tin PNH-HUT 266 Nội dung
9.1. C|c kiểu truy cập tập tin
9.2. Tập tin tuần tự
9.3. Tập tin truy xuất ngẫu nhiên
9.1. C|c kiểu truy cập tập tin
Tập tin: một d~y c|c byte trên đĩa. (ký tự, bản ghi, số, chuỗi …) số, chuỗi …)
Có 3 kiểu truy cập tập tin: tuần tự, ngẫu nhiên, nhị phân. phân.
Tuần tự (Sequential): Đọc/ghi c|c tập tin văn bản theo c|c chuỗi liên tục. theo c|c chuỗi liên tục.
Ngẫu nhiên (Random): Đọc/ghi tập tin văn bản, nhị ph}n có cấu trúc theo c|c mẩu tin có độ d{i cố nhị ph}n có cấu trúc theo c|c mẩu tin có độ d{i cố định.
9.2. Tập tin tuần tự - Open
Mở tập tin:
Cú pháp:
Openpathname For [Input | Output | Append] As
filenumber[Len = buffersize]
Tham số:
- Input: Mở tập tin để đọc, tập tin phải tồn tại sẵn, nếu không sẽ b|o lỗi.
- Mở tập tin chưa có sẵn với Output, Append sẽ tạo mới tập tin v{ mở nó.
- Len: số ký tự trong vùng đệm khi sao chép dữ liệu giữa tập tin v{ chương trình.
- Filenumber: số hiệu tập tin được mở (nguyên, từ 1 .. 511).
PNH-HUT
269
9.2. Tập tin tuần tự - Open (tt)
Mở tập tin – Ví dụ:
Open“C:\TESTFILE" ForOutput As#1 ' Mở tập tin để ghi. tin để ghi.
PNH-HUT
270
9.2. Tập tin tuần tự - Input
Đọc nội dung tập tin:
Hàm Input
Cú pháp: Input (number, filenumber) As String
Trả về number ký tự của tập tin có số hiệu được chỉ định bởi filenumber
Lệnh Input
Cú pháp: Input # filenumber, varlist
Đọc nội dung của tập tin v{o c|c biến được chỉ bởi varlist. Chỉ sử dụng với c|c tập tin được ghi bởi lệnh Write #
Lệnh: Line Input # filenumber, varname
Đọc nội dung của một dòng trong tập tin tuần tự v{o biến chuỗi (varname).
9.2. Tập tin tuần tự - Input (tt)
Đọc nội dung tập tin – Ví dụ:
Dùng Line Input để đọc từng dòng: Dim LinesFromFile, NextLine As String Do Until EOF(1)
Line Input #1, NextLine
LinesFromFile = LinesFromFile + NextLine + Chr(13) + Chr(10)
Loop
Dùng Input để đọc một danh s|ch c|c th{nh phần: Input #1, name, street, city, state, zip
Dùng hàm Inputđể đọc về n ký tự: LinesFromFile = Input(n, #1)
9.2. Tập tin tuần tự - Write
Ghi dữ liệu lên tập tin: Có 2 c}u lệnh Write # v{ Print # Có 2 c}u lệnh Write # v{ Print # C}u lệnh Write #
Cú pháp: Write #filenumber, [outputlist]
Ghi dữ liệu v{o tập tin tuần tự. Nội dung ghi chứa trong danh s|ch biến outputlist, c|c phần tử danh s|ch c|ch nhau bởi dấu phẩy. Nếu không có outputlist thì ghi một dòng trắng.
PNH-HUT
273
9.2. Tập tin tuần tự - Write (tt)
C}u lệnh Print #
Cú pháp:Print # filenumber, [outputlist]
Tương tự như lệnh Write nhưng dữ liệu có thể định dạng khi ghi lên tập tin.
Đối số outputlist có thể l{:
[{Spc(n) | Tab[(n)]}] [expression] [charpos]
Trong đó:
- Spc(n): xen n khoảng trắng v{o tập tin.
- Tab(n): dùng để x|c định cột bắt đầu ghi dữ liệu trong vùng ghi với n l{ số thứ tự cột. Dùng Tab không đối số để chỉ vị trí bắt đầu của vùng ghi tiếp theo.
- Expression: biểu thức chuỗi hoặc biểu thức số
- Charpos: chỉ định vị trí của ký tự kế tiếp.
PNH-HUT
274
9.2. Tập tin tuần tự - Write (tt)
Ghi tập tin – ví dụ:
Ghi nội dung hộp văn bản (một chuỗi) v{o tập tin: Print #1, Thebox.text
Print #1, "This is a test" ' Ghi chuỗi v{o tập tin. Print #1, ' Ghi một dòng trắng v{o tập tin.
Print #1, "Zone 1"; Tab ; "Zone 2" ' Tạo hai vùng ghi
Ghi danh s|ch chuỗi, số:
Dim strString as String, intNumber as Integer strString = “AnyCharacters”
intNumber = 23456
9.2. Tập tin tuần tự - Close
Đóng tập tin:
Cú pháp: Close filenumberlist
Đóng lại c|c tập tin được mở với c|c số hiệu được mô tả trong filenumberlist, filenumberlist có dạng sau: [[#]filenumber] [, [#]filenumber] . . .
Ví dụ: Đóng tập tin đ~ mở cho c|c thao t|c trước
9.2. Tập tin tuần tự - Thực h{nh
Ví dụ: Thiết kế ứng dụng duyệt v{ đọc nội dung tập tin văn bản trên đĩa cứng (B{i thực h{nh) tập tin văn bản trên đĩa cứng (B{i thực h{nh)
PNH-HUT
277
9.3. Tập tin truy xuất ngẫu nhiên
Dữ liệu trong tập tin truy xuất ngẫu nhiên có dạng c|c bản ghi đồng nhất. (Tương đương kiểu dữ liệu mẩu tin). Ví ụ: 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
PNH-HUT
278
9.3. Tập tin truy xuất ngẫu nhiên - Open
Mở tập tin:
Cú pháp:
Open pathname [For Random] As filenumber [Len = RecLength]
Tham số:
- For Random: Mặc định nên có thể không viết.
- Filenumber: Số hiệu tập tin được mở
- Kích thước cho một mẩu tin. Nếu nhỏ hơn sẽ g}y lỗi. Nếu lớn hơn thì l~ng phí.
9.3. Tập tin truy xuất ngẫu nhiên - Get
Đọc nội dung tập tin – C}u lệnh Get:
Cú pháp:
Get [#] filenumber, [recnumber], varname
Đọc nội dung mẩu tin thứ recnumberv{o biến
varname.
9.3. Tập tin truy xuất ngẫu nhiên - Put
Ghi dữ liệu lên tập tin – C}u lệnh Put:
Cú pháp:
Put [#] filenumber, [recnumber], varname
Ghi mẩu tin thay thế hoặc thêm mới.
Thay thế: Nếu recnumber <= số mẩu tin hiện tại
Thêm mới: recnumber = số mẩu tin hiện tại + 1
PNH-HUT
281
9.3. Tập tin truy xuất ngẫu nhiên - Close
Đóng tập tin:
Như với tập tin tuần tự
Lệnh: Close filenumberlist
Đóng lại c|c tập tin được mở với c|c số hiệu được mô tả trong filenumberlist, filenumberlist có dạng sau: [[#]filenumber] [, [#]filenumber]...
PNH-HUT
282
9.3. Tập tin truy xuất ngẫu nhiên – Ví dụ
Giả sử ta có khai b|o 1 mẩu tin như sau:
Type Hanghoa MaHang As String * 10 TenHang As String * 40 DVTinh As String * 15 Gia As Double End Type
Ghi dữ liệu lên tập tin có cấu trúc là các mẩu tin như trên Dim h As Hanghoa h.MaHang = "AM01" h.TenHang = "Dau goi Clear" h.DVTinh = "Chai"
h.Gia = 14000#
Open "E:\Test.dat" For Random As #1 Len = LenB(h)
9.3. Tập tin truy xuất ngẫu nhiên – Ví dụ
Đọc dữ liệu từ tập tin có cấu trúc như trên:
Dim h As Hanghoa
Open "E:\Test.dat" For Random As #1 Len = LenB(h) Get #1, 1, h
Close #1
MsgBox h.MaHang & ": " & h.TenHang & ": " & h.DVTinh & ": " & Str(h.Gia), , “Thong tin Hang Hoa”
Chương 10