Tài liệu Hướng dẫn lập trình VB.NET Chương 12: Khám phá cách xử lý file văn bản và chuỗi pptx

19 787 5
Tài liệu Hướng dẫn lập trình VB.NET Chương 12: Khám phá cách xử lý file văn bản và chuỗi pptx

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Hướng dẫn lập trình VB.NET Chương 12: Khám phá cách xử lý file văn chuỗi Chương 12: Khám phá cách xử lý file TEXT chuỗi oOo -Nội dung thảo luận: - Hiển thị nội dung file text đối tượng TextBox - Lưu thông tin file text - Sử dụng kỹ thuật xử lý chuỗi để xếp mã hóa file Text Trong chương học cách xử lý file text đơn giản với thao tác mở file, hiển thị nội dung, lưu thao tác khác xử lý chuỗi chương trình thơng qua lớp chuỗi String Bạn xếp, ghép nối mã hóa hiển thị từ, dịng tồn nội dung văn file text Chú ý: - Đối tượng FileSystem cung cấp hàm FileOpen, LineInput, PrintLine, FileClose để thao tác với tập tin Đối tượng nằm không gian tên Microsoft.VisualBasic - Ngồi số hàm khơng gian System.IO dùng bổ sung Hiển thị nội dung file Text đối tượng TextBox Cách đơn giản để hiển thị file text dùng điều khiển textbox Để nạp nội dung file text vào textbox ta dùng hàm sau: FileOpen – Mở file để dọc hay ghi, LineInput – Đọc dòng văn từ file, EOF – Kiểm tra xem trỏ đến cuối file chưa, FileClose – Đóng file 1.1 Mở file Text để đọc nội dung Bạn cho phép người dùng mở file text cách hiển thị hộp thoại OpenfileDialog Sau người dùng chọn file, hộp thoại trả đường dẫn file đầy đủ thơng qua thuộc tính filename 1.2 Hàm FileOpen Sau có tên file, bạn dùng hàm FileOpen mở file để đọc hay ghi Cú pháp hàm FileOpen sau: FileOpen(filenumber, pathname, mode) Trong đó: - filenumber: số nguyên từ đến 255 - pathname: đường dẫn hợp lệ trỏ đến file cần mở Biên soạn: Phạm Đức Lập -1- Add: cnt-44-dh, VIMARU Hướng dẫn lập trình VB.NET - Chương 12: Khám phá cách xử lý file văn chuỗi mode: từ khóa cho biết chế độ mở (ví dụ OpenMode.Input mở file để đọc OpenMode.Output mở file để ghi) Số nguyên filenumber dùng để kết hợp với file mở cho mục đích đọc ghi Bạn dùng để tham chiếu đến file trình xử lý Lưu ý số filenumber hàm FileOpen, LineInput, FileClose EOF phải trùng mở file khơng gây lỗi Ví dụ: Chương trình TextBrowser sau minh họa cách mở file text cho hiển thị lên textbox Tìm hiểu chương trình: Chương trình bao gồm menu File với hai mục chọn Open cho phép mở file hiển thị nội dung file text vào textbox mục Close để đóng file Thiết kế giao diện: Bạn tạo giải pháp thêm vào dự án có tên TextBrowser thiết kế giao diện sau: Trong điều khiển có thuộc tính sau: - Textbox1: Enable – False, Multiline – True - OpenToolStripMenuItem: Enable – True - CloseToolStripMenuItem: Enable – False Biên soạn: Phạm Đức Lập -2- Add: cnt-44-dh, VIMARU Hướng dẫn lập trình VB.NET - Chương 12: Khám phá cách xử lý file văn chuỗi Các điều khiển thuộc tính khác hình Viết mã: Tạo thủ tục OpenToolStripMenuItem_Click sau: 'Khai báo hai biến, biến lưu toàn văn 'một biến lưu dòng văn Dim AllText, LineOfText As String 'Tạo lọc file *.txt OpenFileDialog1.Filter = "Text files (*.txt)| *.txt" OpenFileDialog1.ShowDialog() If OpenFileDialog1.FileName "" Then Try 'Mở file để đọc FileOpen(1, OpenFileDialog1.FileName, OpenMode.Input) Do Until EOF(1) 'Đọc dòng đến hết LineOfText = LineInput(1) 'Nối vào biến Alltext AllText = AllText & LineOfText & vbCrLf Loop 'Cập nhật nội dung textbox Label1.Text = OpenFileDialog1.FileName TextBox1.Text = AllText ' Loại bỏ đánh dấu chọn cho văn TextBox1.Select(1, 0) 'Cho phép soạn thảo TextBox1.Enabled = True 'Cho phép chọn mục Close menu CloseToolStripMenuItem.Enabled = True 'Vơ hiệu hóa mục Open menu OpenToolStripMenuItem.Enabled = False Catch ex As Exception MsgBox("Lỗi mở file") Finally 'Đóng file FileClose(1) End Try End If Tiếp theo tạo thủ tục CloseToolStripMenuItem_Click sau: Label1.Text = "Mở file văn mục Open từ menu File" TextBox1.Text = "" OpenToolStripMenuItem.Enabled = True CloseToolStripMenuItem.Enabled = False Các bạn đọc dòng ghi màu xanh để biết cơng dụng phát biểu chương trình Chạy chương trình: Các bạn ấn F5 để chạy chương trình mở file text để xem chương trình chạy Sử dụng lớp StreamReader để mở file Text Ngoài hàm mở đọc file biết, sử dụng lớp StreamReader VB.NET để thực chức tương tự Để sử dụng lớp ta cần đặt thêm khai báo Imports System.IO đầu chương trình Biên soạn: Phạm Đức Lập -3- Add: cnt-44-dh, VIMARU Hướng dẫn lập trình VB.NET Chương 12: Khám phá cách xử lý file văn chuỗi Sau thủ tục OpenToolStripMenuItem_Click viết lại sử dụng lớp StreamReader: Dim StreamReaderToDisPlay As StreamReader OpenFileDialog1.Filter = "TEXT FILES (*TXT) | *.TXT" OpenFileDialog1.ShowDialog() If OpenFileDialog1.FileName "" Then Try StreamReaderToDisPlay = New StreamReader _ (OpenFileDialog1.FileName) Label1.Text = OpenFileDialog1.FileName TextBox1.Text = StreamReaderToDisPlay.ReadToEnd TextBox1.Enabled = True OpenToolStripMenuItem.Enabled = False CloseToolStripMenuItem.Enabled = True Catch ex As Exception MsgBox("Lỗi mở file") Finally StreamReaderToDisPlay.Close() End Try End If Bạn xem tồn mã chương trình giải pháp TextBrowser1 phần tập chương 12 Tạo file text Tạo file text hữu ích bạn muốn ghi file log, ini hay readme Các bước tổng quát để ghi file text sau: - Nhận dl nhập từ người dùng hay chương trình tính - Gán dl cho hay nhiều biến Ví dụ gán nội dung textbox1 biến - Yêu cầu nhập tên file ghi hộp thoại SaveFileDialog - Sử dụng đường dẫn tên file hộp thoại SaveFileDialog trả gọi hàm ghi file - Sử dụng hàm PrintLine để lưu nội dung biến xuống file - Đóng file ghi xong Ví dụ QuickNote sau minh họa việc tạo file text Tìm hiểu chương trình: Chương trình gồm ô textbox để chế dộ multiline scrollbars hai chiều (thuộc tính scrollbar – giá trị both), menu File gồm ba mục chọn Insert Date cho phép chèn ngày tháng vào đầu văn bản, mục chọn Save cho phép ghi lại nội dung ô textbox vào file text với tên người dùng nhập vào, mục Close đóng chương trình Thiết kế giao diện: Biên soạn: Phạm Đức Lập -4- Add: cnt-44-dh, VIMARU Hướng dẫn lập trình VB.NET Chương 12: Khám phá cách xử lý file văn chuỗi Bạn tạo giải pháp thêm vào dự án có tên QuickNote thiết kế giao diện hình: Viết mã: Tạo thủ tục InsertDateToolStripMenuItem_Click sau: TextBox1.Text = DateString & vbCrLf & TextBox1.Text TextBox1.Select(1, 0) Tạo thủ tục SaveToolStripMenuItem_Click sau: SaveFileDialog1.Filter = "Text File (*.txt) | *.txt" SaveFileDialog1.ShowDialog() If SaveFileDialog1.FileName "" Then Try FileOpen(1, SaveFileDialog1.FileName, OpenMode.Output) PrintLine(1, TextBox1.Text) Catch ex As Exception MsgBox("Lỗi ghi") Finally FileClose(1) End Try End If Chạy chương trình: Bạn chạy chương trình, ghi vào textbox đoạn văn tùy ý hay chép từ file khác, chèn thêm ngày tháng lưu vào file (phải nhập tên file) Biên soạn: Phạm Đức Lập -5- Add: cnt-44-dh, VIMARU Hướng dẫn lập trình VB.NET Chương 12: Khám phá cách xử lý file văn chuỗi Xử lý chuỗi chương trình Chuỗi thơng tin cần xử lý nhiều ngôn ngữ lập trình Các thao tác xử lý học chương bao gồm cắt chuỗi, nối chuỗi, tìm kiếm, xếp, so sánh chuỗi,… Việc nối chuỗi ta có tốn tử & hay dùng phương thức Concat VB ví dụ: Dim loichao as String loichao = String.Concat(“Hello ”, “World, ”, “Hi Everyone!”) Bạn dùng phương thức cũ Mid, Ucase, Lcase…hay dùng phương thức mà lớp String cung cấp SubString, ToUpper, ToLower Thường ta dùng phương thức Bảng sau liệt kê hàm xử lý chuỗi NET VB truyền thống: NET VB cũ Chức ToUpper UCase Đổi toàn chuỗi sang chữ hoa ToLower LCase Đổi toàn chuỗi sang chữ thường Length Len Trả chiều dài chuỗi SubString Mid Cắt chuỗi chuỗi cha IndexOf InStr Xác định vị trí chuỗi chuỗi cha Trim Trim Cắt bỏ khoảng trắng chuỗi Remove Biên soạn: Phạm Đức Lập Loại bỏ khoảng trắng chuỗi -6- Add: cnt-44-dh, VIMARU Hướng dẫn lập trình VB.NET Chương 12: Khám phá cách xử lý file văn chuỗi Insert Chèn chuỗi vào chuỗi cha StrComp So sánh chuỗi 3.1 Sắp xếp chuỗi Các ký tự ghép lại tạo thành chuỗi Mỗi ký tự có mã bảng mã ASCII Bảng mã có 255 mã Sau hệ điều hành WinXP, NT, 2000 chuẩn quốc tế qui định bảng mã ký tự khác Unicode Trong bảng mã mã ký tự chiếm byte byte ASCII Việc xếp ký tự dựa vào mã ký tự Chữ A mã 65 đứng trước chữ B có mã 66 3.2 Làm việc với ký tự ASCII Để xem ký tự có mã ASCII dùng hàm Asc, ví dụ: Dim AscCode As Short AscCode = Asc("A") MsgBox(AscCode) Ngược lại bạn dùng hàm Chr() để biết ký tự tương ứng với mã ASCII cho trước, ví dụ: Dim letter As Char letter = Chr(65) MsgBox(letter) Để so sánh chuỗi, bạn dùng toán tử sau: , =, >, =, For i = trungbinh To sophantumang - j = i - trungbinh + For j = (i - trungbinh + 1) To Step -trungbinh If mang(j) 0)) mang(j + 1) = mang(j) j -= Loop mang(j + 1) = tam Next End Sub Lúc tương tự cách gọi trên, bạn gọi thủ tục thay cho lời gọi thủ tục xếp SelectionSort.Và kết khơng có thay đổi Sắp xếp bọt: Sắp xếp bọt xếp cách từ trái qua phải, thấy hai phần tử liền kề khơng trật tự đổi chỗ Q trình lặp lặp lại thu dãy có trật tự tăng hay giảm theo ý muốn Thủ tục BubbleSort() cài đặt SortModule sau: 'Sap xep theo phuong phap noi bot Sub BubbleSort(ByRef mang() As String, _ ByVal sophantumang As Short) Dim i, j As Short i = sophantumang Do While i > For j = To i - If mang(j) > mang(j + 1) Then doicho(mang(j), mang(j + 1)) End If Next j i -= Loop End Sub Thủ tục đổi chỗ khai báo module trình bày phần Bạn thay lời gọi InsertiontSort lời gọi thủ tục BubbleSort xem kết có thay đổi khơng Sắp xếp nhanh QuickSort: Biên soạn: Phạm Đức Lập - 12 VIMARU Add: cnt-44-dh, Hướng dẫn lập trình VB.NET Chương 12: Khám phá cách xử lý file văn chuỗi Sắp xếp trộn MergeSort: Bảo vệ nội dung văn cách mã hóa Bây thử mã hóa có textbox để bạn người đọc Ta dùng giải thuật mã hóa làm xáo trộn văn thuật toán giải mã để đưa văn trở trạng thái ban đầu 4.1 Mã hóa tài liệu cách thay đổi mã ASCII ký tự Bây tạo chương trình mã hóa tiến hành giải mã file văn Ta làm ví dụ EncriptionText 4.2 Chương trình EncriptionText Tìm hiểu chương trình: Chương trình gồm textbox để hiển thị nội dung văn Một menu File với mục chọn: Open Encription File dùng để mở file mã hóa; Encript File dùng để mã hóa nội dung văn có textbox; Decription File giải mã nội dung văn bị mã hóa; Save Encription lưu lại nội dung văn mã hóa vào file; Close để đóng file đưa textbox trạng thái trắng Thiết kế giao diện: Giao diện thiết kế hình: Biên soạn: Phạm Đức Lập - 13 VIMARU Add: cnt-44-dh, Hướng dẫn lập trình VB.NET Chương 12: Khám phá cách xử lý file văn chuỗi Các bạn tạo điều khiển hình kéo điều khiển khác gồm OpenFileDialog1 để mở file, MenuStrip1, SaveFileDialog1 để lưu file Các thuộc tính thay đổi sau: - Open Encription File: name mnuOpenEncriptionFile - Encript File: name mnuEncriptionFile - Decription File: name mnuDecription - Save Encription: name mnuSaveEncription - &Close: name mnuClose - TextBox: name txtDocument Viết mã: Tạo thủ tục mở file: Private Sub mnuOpenEncriptionFile_Click(ByVal sender As Object, _ ByVal e As System.EventArgs) Handles mnuOpenEncriptionFile.Click Dim all, line As String OpenFileDialog1.Filter = "TEXT FILES (*.TXT) | *.TXT" OpenFileDialog1.ShowDialog() If OpenFileDialog1.FileName "" Then Try FileOpen(1, OpenFileDialog1.FileName, OpenMode.Input) Do Until EOF(1) line = LineInput(1) all = all & line Loop txtDocument.Text = all mnuClose.Enabled = True mnuDecription.Enabled = True mnuOpenEncriptionFile.Enabled = False Catch ex As Exception MsgBox("Lỗi mở File!") Finally FileClose(1) End Try End If End Sub Thủ tục lưu file: Private Sub mnuSaveEncription_Click(ByVal sender As Object, _ ByVal e As System.EventArgs) Handles mnuSaveEncription.Click SaveFileDialog1.Filter = "TEXT FILES (*.TXT) | *.TXT" SaveFileDialog1.ShowDialog() If SaveFileDialog1.FileName "" Then Try FileOpen(1, SaveFileDialog1.FileName, OpenMode.Output) PrintLine(1, txtDocument.Text) Catch ex As Exception MsgBox("Lỗi mở file!") Finally FileClose(1) End Try mnuClose.Enabled = True mnuSaveEncription.Enabled = False Biên soạn: Phạm Đức Lập - 14 VIMARU Add: cnt-44-dh, Hướng dẫn lập trình VB.NET Chương 12: Khám phá cách xử lý file văn chuỗi End If End Sub Thủ tục đóng file: Private Sub mnuClose_Click(ByVal sender As Object, _ ByVal e As System.EventArgs) Handles mnuClose.Click txtDocument.Text = "" mnuOpenEncriptionFile.Enabled = True mnuClose.Enabled = False mnuDecription.Enabled = False mnuEncriptionFile.Enabled = False mnuSaveEncription.Enabled = False End Sub Thủ tục mã hóa: Private ByVal e Dim Dim Dim Sub mnuEncriptionFile_Click(ByVal sender As Object, _ As System.EventArgs) Handles mnuEncriptionFile.Click Encript As String = "" letter As Char i, charsInFile As Short charsInFile = txtDocument.Text.Length For i = To charsInFile - letter = txtDocument.Text.Substring(i, 1) Encript = Encript & Chr(Asc(letter) + 1) Next txtDocument.Text = Encript mnuClose.Enabled = True mnuSaveEncription.Enabled = True mnuDecription.Enabled = True End Sub Trong thủ tục ta mã hóa cách tăng mã ký tự bảng mã ASCII lên dòng lệnh: Encript = Encript & Chr(Asc(letter) + 1) Thủ tục giải mã: Private ByVal e Dim Dim Dim Sub mnuDecription_Click(ByVal sender As Object, _ As System.EventArgs) Handles mnuDecription.Click i, charsInFile As Short letter As Char Decript As String = "" charsInFile = txtDocument.Text.Length For i = To charsInFile - letter = txtDocument.Text.Substring(i, 1) Decript = Decript & Chr(Asc(letter) - 1) Next txtDocument.Text = Decript mnuClose.Enabled = True mnuSaveEncription.Enabled = False mnuEncriptionFile.Enabled = True mnuDecription.Enabled = True End Sub Việc giải mã tiến hành trừ mã ký tự bảng mã ASCII với dòng mã: Biên soạn: Phạm Đức Lập - 15 VIMARU Add: cnt-44-dh, Hướng dẫn lập trình VB.NET Chương 12: Khám phá cách xử lý file văn chuỗi Decript = Decript & Chr(Asc(letter) - 1) Chạy chương trình: Bạn ấn F5 chạy chương trình mở file văn hay gõ nội dung vào textbox để mã hóa giải mã Điều thật thú vị Sử dụng tốn tử XOR mã hóa Với cách mã hóa có nhiều hạn chế Hạn chế mã ASCII giới hạn từ 0-255, cộng ngồi khoảng chương tình gặp lỗi Cách khắc phục ta dùng toán tử XOR, XOR số với giá trị hai lần bạn nhận lại số Chúng ta làm rõ điều thơng qua ví dụ XorEccriptionTextFile: Tìm hiểu chương trình: Biên soạn: Phạm Đức Lập - 16 VIMARU Add: cnt-44-dh, Hướng dẫn lập trình VB.NET Chương 12: Khám phá cách xử lý file văn chuỗi Chương trình có textbox cho phép hiển thị nhập liệu văn bản; menu File với ba mục chọn Open Encription File cho phép mở file mã hóa Khi mở file chương trình yêu cầu người dùng nhập xác khóa dùng để mã hóa mã hóa Mục chọn thứ hai Save Encription File Mục cho phép người dùng mã hóa nội dung văn gõ vào textbox Chương trình đưa thông báo yêu cầu người dùng nhập vào khóa dùng để mã hóa Người dùng cần nhớ xác từ khóa để giải mã file sau Mục chọn Close đưa textbox dạng trắng mục Open Encription File lên cho người dùng mở file, gõ văn vào ô textbox để làm sáng mục chọn Save Thiết kế giao diện: Giao diện chương trình hình: Bạn tạo giải pháp thêm vào dự án tên thiết kế giao diện hình Viết mã: Tạo thủ tục mnuSaveEncriptionFile_Click mã hóa văn lưu vào file: Private ByVal e Dim Dim Dim Sub mnuSaveEncriptionFile_Click(ByVal sender As Object, _ As System.EventArgs) Handles mnuSaveEncriptionFile.Click letter As Char key As String i, charsInFile, code As Short SaveFileDialog1.Filter = "TEXT FILES (*.TXT) | *.TXT" SaveFileDialog1.ShowDialog() If SaveFileDialog1.FileName "" Then Biên soạn: Phạm Đức Lập - 17 VIMARU Add: cnt-44-dh, Hướng dẫn lập trình VB.NET Chương 12: Khám phá cách xử lý file văn chuỗi key = InputBox("Nhap khoa ma hoa:") If key = "" Then Exit Sub code = CShort(key) charsInFile = txtDocument.Text.Length FileOpen(1, SaveFileDialog1.FileName, OpenMode.Output) For i = To charsInFile - letter = txtDocument.Text.Substring(i, 1) Print(1, Asc(letter) Xor code) Next FileClose(1) mnuClose.Enabled = True End If End Sub Trước hết, chương trình yêu cầu nhập vào khóa phát biểu: key = InputBox("Nhap khoa ma hoa:") Sau tiến hành XOR mã ASCII ký tự với khóa ghi vào file phát biểu: Print(1, Asc(letter) Xor code) Thủ tục mnuOpenEncriptionFile_Click giải mã: Private ByVal e Dim Dim Dim Dim Sub mnuOpenEncriptionFile_Click(ByVal sender As Object, _ As System.EventArgs) Handles mnuOpenEncriptionFile.Click ch As Char key As String code, number As Short DeEncript As String = "" OpenFileDialog1.Filter = "TEXT FILE (*.TXT) | *.TXT" OpenFileDialog1.ShowDialog() If OpenFileDialog1.FileName "" Then Try key = InputBox("Nhap dung khoa da ma hoa:") If key = "" Then Exit Sub code = CShort(key) FileOpen(1, OpenFileDialog1.FileName, OpenMode.Input) Do Until EOF(1) Input(1, number) ch = Chr(number Xor code) DeEncript = DeEncript & ch Loop txtDocument.Text = DeEncript txtDocument.Enabled = True mnuClose.Enabled = True mnuOpenEncriptionFile.Enabled = False Catch ex As Exception MsgBox("Loi mo File!") Finally FileClose(1) End Try End If End Sub Thủ tục tương tự Trước hết yêu cầu nhập vào khóa dùng để mã hóa sau tiến hành giải mã cách XOR lại lần để thu mã ASCII ban đầu chuyển trở lại ký tự hàm Chr: Biên soạn: Phạm Đức Lập - 18 VIMARU Add: cnt-44-dh, Hướng dẫn lập trình VB.NET Chương 12: Khám phá cách xử lý file văn chuỗi ch = Chr(number Xor code) Vậy chương trình hồn thành Chạy chương trình: Bạn chạy chương trình, nhập vào textbox đoạn văn bất kỳ: Tiến hành mã hóa lưu lại vào file có tên mahoa.txt với từ khóa 123 File có nội dung sau: Bây bạn đóng lại cách chọn mục Close mở lại file xem Tổng kết chương Bạn làm lại tập thực chương Biên soạn: Phạm Đức Lập - 19 VIMARU Add: cnt-44-dh, ... Phạm Đức Lập -5- Add: cnt-44-dh, VIMARU Hướng dẫn lập trình VB.NET Chương 12: Khám phá cách xử lý file văn chuỗi Xử lý chuỗi chương trình Chuỗi thông tin cần xử lý nhiều ngơn ngữ lập trình Các... XorEccriptionTextFile: Tìm hiểu chương trình: Biên soạn: Phạm Đức Lập - 16 VIMARU Add: cnt-44-dh, Hướng dẫn lập trình VB.NET Chương 12: Khám phá cách xử lý file văn chuỗi Chương trình có textbox... dẫn lập trình VB.NET Chương 12: Khám phá cách xử lý file văn chuỗi Insert Chèn chuỗi vào chuỗi cha StrComp So sánh chuỗi 3.1 Sắp xếp chuỗi Các ký tự ghép lại tạo thành chuỗi Mỗi ký tự có mã bảng

Ngày đăng: 12/12/2013, 23:15

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan