Qui trình điển hình để truy xuất Binary file

Một phần của tài liệu Giáo trình: Máy tính số potx (Trang 146 - 148)

I E= T*R

10 .5 Vẽ văn bản và đồ họa lên đối tượng giao diện

11.4 Qui trình điển hình để truy xuất Binary file

q Cú pháp lệnh open file nhị phân như sau :

OpenpathnameFor Binary As filenumber

q Nếu chưa biết cấu trúc dữ liệu của file, nên dùng biến dãy các byte để đọc/ghi dữ liệu từ/ra file nhị phân. Nếu đã biết cấu trúc dữ liệu của file, nên khai báo kiểu dữ liệu miêu tả cấu trúc đó rồi khai báo biến có kiểu vừa định nghĩa để chứa thông tin đọc từ file vào.

q Dùng lệnh Seek[#]filenumber, position để dời pointer đọc/ghi tới vị trí xác định trước khi truy xuất.

q Dùng lệnh Get [#]filenumber, [position], AVariable để đọc dữ liệu từ vị trí position rồi chứa vào biến AVariable. Số byte được đọc = kích thước của biến dữ liệu.

Generated by Foxit PDF Creator © Foxit Software

http://www.foxitsoftware.com For evaluation only.

q Dùng lệnh Put [#]filenumber, [position], AVariable để ghi nội dung của biến AVariable ra file từ vị trí position. Số byte được ghi = kích thước của biến dữ liệu.

q Sau khi đã xử lý xong file, ta dùng lệnh Close [#]filenum để đóng file lại.

Thí dụ truy xuất Binary file

q Mỗi file khả thi (executable) đều có 1 header dài 20h (32) byte với các field như sau : Index Field Diễn giải

0 Magic Chuỗi 2 ký tự magic "MZ" ... ... các field khác chưa cần chú ý

18h Offset Offset tới bảng tái định chương trình stub

Nếu giá trị field Offset (2 byte) ở offset 18h (24) có giá trị là 40h (64) thì file tương ứng là file executable trên Windows (*.exe, *.dll, *.ocx, *.scr, *.drv,...). Còn nếu giá trị Offset < 40h thì file tương ứng là file *.exe chạy trên DOS.

q Dựa vào Header trên, ta thử viết 1 ứng dụng cho phép user chọn đường dẫn của 1 file bất kỳ rồi kiểm tra tính chất của file đó và hiển thị kết quả :

q Không phải file executable q File executable chạy trên DOS

q File executable trên Windows (*.exe, *.dll, *.ocx, *.scr, *.drv,...).

Giao diện đề nghị của thí dụ truy xuất Binary file

Option Explicit

' Thủ tục xử lý sự kiện Click button Private Sub cmdBrowse_Click()

http://www.foxitsoftware.com For evaluation only.

CommonDialog1.ShowOpen ' hiển thị cửa sổ duyệt và chọn file txtFileName.Text = CommonDialog1.FileName

CheckFileClass (txtFileName.Text) End Sub

Private Sub CheckFileClass(strFileName As String) Dim FileNum As Integer

Dim strMagic As String * 2 Dim intOffset As Integer

FileNum = FreeFile ' Tìm chỉ số file chưa dùng và mở file Open strFileName For Binary As FileNum

Get FileNum, 1, strMagic ' đọc 2 chuỗi 2 ký tự magic đầu file If strMagic <> "MZ" Then

txtFileClass.Text = "Khong phai file executable" Exit Sub

End If

Get FileNum, &H19, intOffset ' đọc word Offset tới chương trình Stub If intOffset < &H40 Then

txtFileClass.Text = "File executable tren MSDOS" Else

txtFileClass.Text = "File executable tren Windows (*.exe, *.dll, *.ocx,...)" End If

Close #FileNum End Sub

Một phần của tài liệu Giáo trình: Máy tính số potx (Trang 146 - 148)

Tải bản đầy đủ (PDF)

(176 trang)