markdown:
Chương 12:
Khám phá cách xử lý file TEXT và chuỗi
--------oOo--------
Nội dung thảo luận:
- Hiển thị nội dung file text bằng đối tượng TextBox
- Lưu các thông tin trong file text
- Sử dụng kỹ thuật xử lý chuỗi để sắp xếp và mã hóa file Text
Trong chương này chúng ta học cách xử lý file text đơn giản với các thao tác như mở file, hiển thị nội dung, lưu và các thao tác khác như xử lý chuỗi trong chương trình thông qua lớp chuỗi String. Bạn có thể sắp xếp, ghép nối mã hóa hiển thị từng từ, từng dòng và toàn bộ nội dung văn bản trong file text.
Chú ý:
- Đối tượng FileSystem cung cấp các hàm như FileOpen, LineInput, PrintLine, FileClose để thao tác với tập tin. Đối tượng này nằm trong không gian tên Microsoft.VisualBasic.
- Ngoài ra một số hàm trong không gian System.IO cũng có thể dùng bổ sung.
1. Hiển thị nội dung file Text bằng đối tượng TextBox
Cách đơn giản nhất để hiển thị một file text là dùng điều khiển textbox. Để nạp nội dung file text vào textbox ta dùng 4 hàm sau: FileOpen – Mở file để dọc hay ghi, LineInput – Đọc một dòng văn bản từ file, EOF – Kiểm tra xem con trỏ đã đến cuối file chưa, FileClose – Đóng file.
1.1. Mở file Text để đọc nội dung
Bạn có thể cho phép người dùng mở file text bằng cách hiển thị hộp thoại OpenfileDialog. Sau khi người dùng đã chọn file, hộp thoại sẽ trả về đường dẫn file đầy đủ thông qua thuộc tính filename.
1.2. Hàm FileOpen
Sau khi đã có tên file, bạn có thể dùng hàm FileOpen mở file để đọc hay ghi. Cú pháp hàm FileOpen như sau:
FileOpen(filenumber, pathname, mode)
Trong đó:
- filenumber: số nguyên từ 1 đến 255
- pathname: đường dẫn hợp lệ trỏ đến file cần mở
- mode: từ khóa cho biết chế độ mở (ví dụ OpenMode.Input là mở file để đọc và OpenMode.Output là mở file để ghi)
Số nguyên filenumber dùng để kết hợp với file khi nó được mở cho mục đích đọc ghi. Bạn dùng nó để tham chiếu đến file trong quá trình xử lý. Lưu ý là các số filenumber trong hàm FileOpen, LineInput, FileClose và EOF phải trùng nhau thì khi mở file mới không gây ra lỗi.
Ví dụ:
Chương trình TextBrowser sau sẽ minh họa cách mở một file text và cho hiển thị nó lên một ô textbox.
Tìm hiểu chương trình:
Chương trình bao gồm một menu File với hai mục chọn là Open cho phép mở file rồi hiển thị nội dung file text đó vào một textbox và mục Close để đóng file.
Thiết kế giao diện:
Bạn tạo một giải pháp mới và thêm vào dự án có tên TextBrowser và thiết kế giao diện như sau:
Trong đó các điều khiển có thuộc tính như sau:
- Textbox1: Enable – False, Multiline – True.
- OpenToolStripMenuItem: Enable – True
- CloseToolStripMenuItem: Enable – False
- Các điều khiển và thuộc tính khác như hình.
Viết mã:
Tạo thủ tục OpenToolStripMenuItem_Click như sau:
'Khai báo hai biến, một biến lưu toàn bộ văn bản
'một biến lưu từng dòng văn bản
Dim AllText, LineOfText As String
'Tạo bộ 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 từng 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 bản
TextBox1.Select(1, 0)
'Cho phép soạn thảo
TextBox1.Enabled = True
'Cho phép chọn mục Close trên menu
CloseToolStripMenuItem.Enabled = True
'Vô hiệu hóa mục Open trên 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 như sau:
Label1.Text = "Mở file văn bản bằng mục Open từ menu File"
TextBox1.Text = ""
OpenToolStripMenuItem.Enabled = True
CloseToolStripMenuItem.Enabled = False
Các bạn có thể đọc các dòng ghi chú màu xanh lá cây để biết công dụng của từng phát biểu của chương trình.
Chạy chương trình:
Các bạn ấn F5 để chạy chương trình và mở một file text bất kỳ để xem chương trình chạy.
Sử dụng lớp StreamReader để mở file Text
Ngoài các hàm mở đọc file như đã biết, chúng ta cũng có thể sử dụng lớp StreamReader của VB.NET để thực hiện chức năng tương tự. Để sử dụng lớp này ta cần đặt thêm khai báo Imports System.IO ở đầu chương trình.
Sau đây là thủ tục OpenToolStripMenuItem_Click đã được 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 có thể xem toàn bộ mã chương trình trong giải pháp TextBrowser1 của phần bài tập chương 12.
2. Tạo một file text mới
Tạo file text rất hữu ích khi bạn muốn ghi ra file .log, .ini hay readme. Các bước tổng quát để ghi một file text có thể như sau:
- Nhận dl nhập từ người dùng hay do chương trình tính ra
- Gán dl cho một hay nhiều biến. Ví dụ như gán nội dung textbox1 ra một biến
- Yêu cầu nhập tên file sẽ ghi ra bằng hộp thoại SaveFileDialog
- Sử dụng đường dẫn và tên file do hộp thoại SaveFileDialog trả về và gọi hàm ghi file
- Sử dụng hàm PrintLine để lưu nội dung biến xuống file
- Đóng file khi ghi xong
Ví dụ QuickNote sau đây sẽ minh họa việc tạo file text.
Tìm hiểu chương trình:
Chương trình gồm một ô textbox để chế dộ multiline hiện scrollbars cả 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 một file text với tên do người dùng nhập vào, mục Close đóng chương trình.
Thiết kế giao diện:
Bạn tạo một giải pháp mới và thêm vào một dự án có cùng tên là QuickNote rồi thiết kế giao diện như hình:
Viết mã:
Tạo thủ tục InsertDateToolStripMenuItem_Click như sau:
TextBox1.Text = DateString & vbCrLf & TextBox1.Text
TextBox1.Select(1, 0)
Tạo thủ tục SaveToolStripMenuItem_Click như 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 khi ghi")
Finally
FileClose(1)
End Try
End If
Chạy chương trình:
Bạn hãy chạy chương trình, ghi vào textbox những đoạn văn bản tùy ý hay có thể sao chép từ một file khác, chèn thêm ngày tháng và lưu vào một file nào đó (phải nhập tên file).
3. Xử lý chuỗi trong chương trình
Chuỗi là thông tin cần xử lý nhiều nhất trong mọi ngôn ngữ lập trình. Các thao tác xử lý sẽ học trong chương này bao gồm cắt chuỗi, nối chuỗi, tìm kiếm, sắp xếp, so sánh chuỗi,…
Việc nối chuỗi ta có toán tử & hay có thể dùng phương thức Concat của VB ví dụ:
Dim loichao as String
loichao = String.Concat(“Hello ”, “World, ”, “Hi Everyone!”)
Bạn có thể dùng các phương thức cũ như Mid, Ucase, Lcase…hay dùng các phương thức mới mà lớp String cung cấp như SubString, ToUpper, ToLower. Thường ta dùng các phương thức mới này hơn.
Bảng sau liệt kê các hàm xử lý chuỗi trong cả .NET và VB truyền thống:
.NET VB cũ Chức năng
ToUpper UCase Đổi toàn bộ chuỗi sang chữ hoa
ToLower LCase Đổi toàn bộ chuỗi sang chữ thường
Length Len Trả về chiều dài chuỗi
SubString Mid Cắt chuỗi con trong chuỗi cha
IndexOf InStr Xác định vị trí chuỗi con trong chuỗi cha
Trim Trim Cắt bỏ khoảng trắng trong chuỗi
Remove Loại bỏ khoảng trắng ở giữa chuỗi
Insert Chèn chuỗi con 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ột mã trong bảng mã ASCII. Bảng mã này có 255 mã. Sau này trong các hệ điều hành như WinXP, NT, 2000 thì chuẩn quốc tế qui định các bảng mã ký tự khác như Unicode. Trong bảng mã này mỗi mã ký tự chiếm 2 byte chứ không phải là 1 byte như trong ASCII. Việc sắp xếp các ký tự là dựa vào mã của ký tự đó. Chữ A mã 65 sẽ đứng trước chữ B có mã 66.
3.2. Làm việc với ký tự ASCII
Để xem một ký tự có mã ASCII là bao nhiêu có thể dùng hàm Asc, ví dụ:
Dim AscCode As Short
AscCode = Asc("A")
MsgBox(AscCode)
Ngược lại bạn có thể dùng hàm Chr() để biết ký tự nào tương ứng với một mã ASCII cho trước, ví dụ:
Dim letter As Char
letter = Chr(65)
MsgBox(letter)
Để so sánh chuỗi, bạn có thể dùng các toán tử sau: <>, =, >, <, >=, <=.
Một ký tự coi là lớn hơn nếu mã ASCII của nó lớn hơn, ví dụ “A” < “B” vì mã của “A” là 65 nhỏ hơn 66 là mã của “B”.
Khi so sánh hai chuỗi, VB sẽ so sánh lần lượt các ký tự từ đầu tiên đến tiếp theo cho đến khi gặp ký tự khác nhau. Nếu không có ký tự khác nhau thì chuỗi nào dài hơn, chuỗi đó lớn hơn.
3.3. Sắp xếp chuỗi trong ô TextBox
Chương trình SortText sau đây sẽ minh họa việc sắp xếp chuỗi bằng các toán tử so sánh chuỗi trong một ô textbox. Đây là chương trình được nâng cấp từ chương trình QuickNote.
Tìm hiểu chương trình:
Chương trình SortText này có một form chính. Form này có một menu File với 4 mục chọn. Mục chọn Open cho phép mở một file text, mục chọn Sort Text cho phép sắp xếp các dòng trong textbox theo thứ tự tăng dần, mục chọn Save cho phép lưu lại những thao tác đã thực hiện, mục chọn Close để đóng file.
Thiết kế giao diện:
Giao diện nó tương tự như chương trình QuickNote nhưng có thêm các mục chọn như đã liệt kê. Giao diện như hình:
Thuộc tính enable của textbox có giá trị là True để cho phép người dùng nhập văn bản cho chương trình sắp xếp. Nghĩa là chương trình có thể sắp xếp nội dung của một file text được chỉ định hay là người dùng trực tiếp nhập liệu vào.
Viết mã:
Trước hết ta thêm vào dự án một module có tên SortModule. Module này sẽ khai báo một mảng có tên strArr chứa các dòng của văn bản và chứa một hàm Sapxep() để sắp xếp các phần tử trong mảng theo thứ tự giảm dần. Nội dung module như sau:
Public strArr() As String
Sub Sapxep(ByRef mang() As String, ByVal sophantumang As Short)
Dim tam As String
Dim i, j, trungbinh As Short
'Sắp xếp các phần tử trong mảng mang()
'Mảng sắp xếp nhị phân theo thứ tự giảm dần
trungbinh = sophantumang \ 2
Do While trungbinh > 0
For i = trungbinh To sophantumang - 1
j = i - trungbinh + 1
For j = (i - trungbinh + 1) To 1 Step -trungbinh
If mang(j) <= mang(j + trungbinh) Then Exit For
tam = mang(j)
mang(j) = mang(j + trungbinh)
mang(j + trungbinh) = tam
Next j
Next i
trungbinh = trungbinh \ 2
Loop
End Sub
Ta có thể lưu lại nội dung module này để sử dụng trong các ví dụ sau.
Tiếp theo ta tạo thủ tục OpenToolStripMenuItem_Click như sau:
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 & vbCrLf
Loop
TextBox1.Text = All
TextBox1.Select(1, 0)
TextBox1.Enabled = True
OpenToolStripMenuItem.Enabled = False
CloseToolStripMenuItem.Enabled = True
SaveToolStripMenuItem.Enabled = True
Catch ex As Exception
MsgBox("Lỗi mở File!")
Finally
FileClose(1)
End Try
End If
Thủ tục CloseToolStripMenuItem_Click như sau:
TextBox1.Text = ""
CloseToolStripMenuItem.Enabled = False
OpenToolStripMenuItem.Enabled = True
SaveToolStripMenuItem.Enabled = False
TextBox1.Enabled = False
Thủ tục SaveToolStripMenuItem_Click :
OpenFileDialog1.Filter = "TEXT FILES (*.TXT) | *.TXT"
OpenFileDialog1.ShowDialog()
If OpenFileDialog1.FileName <> "" Then
Try
FileOpen(1, OpenFileDialog1.FileName, OpenMode.Output)
PrintLine(1, TextBox1.Text)
OpenToolStripMenuItem.Enabled = True
SaveToolStripMenuItem.Enabled = False
Catch ex As Exception
MsgBox("Lỗi ghi file!")
Finally
FileClose(1)
End Try
End If
Bây giờ ta tạo thủ tục SortTextToolStripMenuItem_Click:
Dim ln, curline, letter As String
Dim i, charsInFile, lineCount As Short
'Kiểm tra số dòng trong chuỗi
lineCount = 0
charsInFile = TextBox1.Text.Length 'Lấy chiều dài chuỗi
For i = 0 To charsInFile - 1 'Đếm từng ký tự
'Lấy nội dung
letter = TextBox1.Text.Substring(i, 1)
'Nếu là ký tự xuống dòng
If letter = Chr(13) Then
lineCount += 1
i += 1 'Bỏ qua ký tự 10 (10, 13 thường đi kèm)
End If
Next i
'Tạo mảng chứa các dòng văn bản
ReDim strArr(lineCount)
curline = 1
ln = ""
'Duyệt qua ký tự trong chuỗi
For i = 0 To charsInFile - 1
letter = TextBox1.Text.Substring(i, 1)
If letter = Chr(13) Then
curline += 1
i += 1
ln = ""
Else
'Đưa nội dòng vào mảng
ln = ln & letter
strArr(curline) = ln
End If
Next i
'Sắp xếp mảng
Sapxep(strArr, lineCount)
'Hiển thị mảng đã sắp xếp trở lại TextBox
TextBox1.Text = ""
curline = 1
For i = 1 To lineCount
TextBox1.Text = TextBox1.Text & _
strArr(curline) & vbCrLf
curline += 1
Next i
Chạy chương trình:
Bạn có thể chạy chương trình, mở một file text có sẵn hay tự mình nhập vào nội dung văn bản và tiến hành lưu lại.
Bạn có thể thấy chương trình vẫn còn một lỗi nhỏ. Bạn thử tìm ra và khắc phục xem sao.
Trong module trên, với thủ tục sapxep bạn có thể dùng giải thuật sắp xếp khác nếu muốn. Các thủ tục sắp xếp hay tìm kiếm đều có thể tìm thấy trong môn cấu trúc dữ liệu và giải thuật, các bạn có thể tham khảo thêm.
Mở rộng:
Bây giờ nhằm phục vụ các bạn ôn lại các thuật toán trong môn cấu trúc dữ liệu và giải thuật phần sắp xếp, mình sẽ cài đặt các thủ tục sắp xếp khác nhau như sắp xếp chọn (SelectionSort), sắp xếp chèn trực tiếp (Insertion Sort), sắp xếp nổi bọt (Bubble Sort)…
Sắp xếp chọn:
Sắp xếp chọn trong một mảng là chạy một vòng lặp từ đầu đến cuối mảng, chọn ra phần tử nhỏ nhất tiến hành đổi vị trí hai phần tử đó (thứ k) và phần tử thứ nhất. Vòng lặp lại tiếp tục như vậy từ phần tử thứ hai trở đi.
Thủ tục SelectionSort được cài đặt trong module sortmodule như sau:
'Sap xep theo phuong phap sap xep chon
Sub SelectionSort(ByRef mang() As String, _
ByVal sophantumang As Short)
Dim i, j, k As Short
For i = 1 To sophantumang - 1
k = i
For j = i + 1 To sophantumang
If (mang(j) < mang(k)) Then k = j
Next j
doicho(mang(i), mang(k))
Next i
End Sub
Trong đó thủ tục doicho() cài đặt:
'Thu tuc doi cho hai phan tu
Sub doicho(ByRef x As String, ByRef y As String)
Dim tam As String
tam = x
x = y
y = tam
End Sub
Để thực thi thủ tục sắp xếp theo phương pháp chọn này, trong chương trình thay vì câu gọi Sapxep(strArr, lineCount) thì bạn gọi SelectionSort(strArr, lineCount) và chạy chương trình. Kết quả không có gì thay đổi.
Sắp xếp chèn trực tiếp:
Sắp xếp chèn trực tiếp dựa trên ý tưởng như sau: coi mảng đó có đoạn đầu (i-1 phần tử) đã sắp xếp. Ta chạy vòng lặp từ phần tử tiếp theo (phần tử thứ i) và chèn các phần tử tiếp theo đó vào đoạn đầu sao cho theo trật tự qui định (tăng hay giảm). Vậy nếu muốn sắp xếp một mảng thì đoạn đầu tiên sẽ gồm một phần tử duy nhất a[0] và tiến hành chèn các phần tử từ a[1].
Việc chèn tiến hành như sau: lưu a[i] vào biến x. Cho biến j chạy từ đầu mảng (từ 1) và xét xem x < a[j]. Nếu đúng thì đẩy a[j] ra sau một vị trí và giảm j đi 1. Quá trình tiếp tục khi x>=a[j] hay j = 0 và đặt x vào vị trí j+1.
Thủ tục InsertionSort() được cài đặt trong SortModule như sau:
'Sap xep theo phuong phap chen truc tiep
Sub InsertionSort(ByRef mang() As String, _
ByVal sophantumang As Short)
Dim i, j As Short
Dim tam As String
For i = 1 To sophantumang
tam = mang(i)
j = i - 1
Do While ((tam < mang(j)) And (j > 0))
mang(j + 1) = mang(j)
j -= 1
Loop
mang(j + 1) = tam
Next
End Sub
Lúc này cũng tương tự như cách gọi trên, bạn gọi thủ tục này thay cho lời gọi thủ tục sắp xếp SelectionSort.Và kết quả không có gì thay đổi.
Sắp xếp nổi bọt:
Sắp xếp nổi bọt là sắp xếp bằng cách đi từ trái qua phải, nếu thấy hai phần tử liền kề nhau không đúng trật tự thì đổi chỗ. Quá trình đó cứ lặp đi lặp lại như vậy cho đến khi thu được dãy có trật tự tăng hay giảm theo ý muốn.
Thủ tục BubbleSort() được cài đặt trong SortModule như 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 > 0
For j = 1 To i - 1
If mang(j) > mang(j + 1) Then
doicho(mang(j), mang(j + 1))
End If
Next j
i -= 1
Loop
End Sub
Thủ tục đổi chỗ đã được khai báo trong module và trình bày trong phần trên. Bạn cũng thay lời gọi InsertiontSort bằng lời gọi thủ tục BubbleSort và xem kết quả có gì thay đổi không.
Sắp xếp nhanh QuickSort:
Sắp xếp trộn MergeSort:
4. Bảo vệ nội dung văn bản bằng cách mã hóa
Bây giờ chúng ta thử mã hóa những gì có trong ô textbox để chỉ mình bạn là người có thể đọc được. Ta dùng một giải thuật mã hóa làm xáo trộn văn bản và một thuật toán giải mã để đưa văn bản trở về trạng thái ban đầu.
4.1. Mã hóa tài liệu bằng cách thay đổi mã ASCII của các ký tự
Bây giờ chúng ta tạo chương trình mã hóa và tiến hành giải mã một file văn bả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 một ô textbox để hiển thị nội dung văn bản. Một menu File với các mục chọn: Open Encription File dùng để mở các file đã mã hóa; Encript File dùng để mã hóa nội dung văn bản có trong ô textbox; Decription File giải mã nội dung văn bản đã bị mã hóa; Save Encription lưu lại nội dung văn bản đã mã hóa vào một file; Close để đóng file và đưa ô textbox về trạng thái trắng.
Thiết kế giao diện:
Giao diện thiết kế như hình:
Các bạn tạo các điều khiển như hình và kéo các điều khiển khác gồm OpenFileDialog1 để mở file, MenuStrip1, SaveFileDialog1 để lưu file.
Các thuộc tính thay đổi như sau:
- Open Encription File: name là mnuOpenEncriptionFile
- Encript File: name là mnuEncriptionFile
- Decription File: name là mnuDecription
- Save Encription: name là mnuSaveEncription
- &Close: name là mnuClose
- TextBox: name là 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
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 Sub mnuEncriptionFile_Click(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles mnuEncriptionFile.Click
Dim Encript As String = ""
Dim letter As Char
Dim i, charsInFile As Short
charsInFile = txtDocument.Text.Length
For i = 0 To charsInFile - 1
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 trên ta mã hóa bằng cách tăng mã của ký tự trong bảng mã ASCII lên một bằng dòng lệnh:
Encript = Encript & Chr(Asc(letter) + 1)
Thủ tục giải mã:
Private Sub mnuDecription_Click(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles mnuDecription.Click
Dim i, charsInFile As Short
Dim letter As Char
Dim Decript As String = ""
charsInFile = txtDocument.Text.Length
For i = 0 To charsInFile - 1
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ã là tiến hành trừ mã của ký tự trong bảng mã ASCII đi 1 với dòng mã:
Decript = Decript & Chr(Asc(letter) - 1)
Chạy chương trình:
Bạn ấn F5 chạy chương trình và có thể mở file văn bản hay gõ nội dung vào textbox để mã hóa và giải mã. Điều này thật thú vị.
5. Sử dụng toán tử XOR trong mã hóa
Với cách mã hóa trên đây có rất nhiều hạn chế. Hạn chế đầu tiên đó là mã ASCII chỉ giới hạn từ 0-255, nếu cộng ra ngoài khoảng này thì chương tình sẽ gặp lỗi ngay.
Cách khắc phục là ta dùng toán tử XOR, khi XOR một số với một giá trị nào đó hai lần thì bạn sẽ nhận lại chính số đó.
Chúng ta hãy làm rõ điều này thông qua ví dụ XorEccriptionTextFile:
Tìm hiểu chương trình:
Chương trình có một textbox cho phép hiển thị cũng như nhập liệu văn bản; một menu File với ba mục chọn là Open Encription File cho phép mở file đã mã hóa. Khi mở file này chương trình sẽ yêu cầu người dùng nhập chính xác khóa đã dùng để mã hóa khi mã hóa.
Mục chọn thứ hai là Save Encription File. Mục này cho phép người dùng mã hóa nội dung văn bản gõ vào trong ô textbox. Chương trình sẽ đưa ra thông báo yêu cầu người dùng nhập vào một khóa dùng để mã hóa. Người dùng cần nhớ chính xác từ khóa này để giải mã file sau này.
Mục chọn Close sẽ đưa textbox về dạng trắng và hiện mục Open Encription File lên cho người dùng mở file, hoặc gõ văn bản vào ô textbox để làm sáng mục chọn Save.
Thiết kế giao diện:
Giao diện của chương trình như hình:
Bạn tạo giải pháp và thêm vào dự án cùng tên rồi thiết kế giao diện như hình.
Viết mã:
Tạo thủ tục mnuSaveEncriptionFile_Click mã hóa văn bản và lưu vào file:
Private Sub mnuSaveEncriptionFile_Click(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles mnuSaveEncriptionFile.Click
Dim letter As Char
Dim key As String
Dim i, charsInFile, code As Short
SaveFileDialog1.Filter = "TEXT FILES (*.TXT) | *.TXT"
SaveFileDialog1.ShowDialog()
If SaveFileDialog1.FileName <> "" Then
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 = 0 To charsInFile - 1
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 sẽ yêu cầu nhập vào một khóa bằng phát biểu:
key = InputBox("Nhap khoa ma hoa:")
Sau đó nó tiến hành XOR mã ASCII của ký tự với khóa và ghi vào file bằng phát biểu:
Print(1, Asc(letter) Xor code)
Thủ tục mnuOpenEncriptionFile_Click giải mã:
Private Sub mnuOpenEncriptionFile_Click(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles mnuOpenEncriptionFile.Click
Dim ch As Char
Dim key As String
Dim code, number As Short
Dim 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 này cũng tương tự. Trước hết yêu cầu nhập vào khóa đã dùng để mã hóa và sau đó tiến hành giải mã bằng cách XOR lại một lần nữa để thu được mã ASCII ban đầu và chuyển trở lại ký tự bằng hàm Chr:
ch = Chr(number Xor code)
Vậy là chương trình đã hoàn thành.
Chạy chương trình:
Bạn chạy chương trình, nhập vào textbox một đoạn văn bản bất kỳ:
Tiến hành mã hóa và lưu lại vào file có tên mahoa.txt với từ khóa là 123. File đó sẽ có nội dung như sau:
Bây giờ bạn đóng lại bằng cách chọn mục Close và mở lại file trên xem sao.
6. Tổng kết chương
Bạn có thể làm lại các bài tập đã thực hiện trong chương này.
Khám phá cách xử lý file TEXT và chuỗi
--------oOo--------
Nội dung thảo luận:
- Hiển thị nội dung file text bằng đối tượng TextBox
- Lưu các thông tin trong file text
- Sử dụng kỹ thuật xử lý chuỗi để sắp xếp và mã hóa file Text
Trong chương này chúng ta học cách xử lý file text đơn giản với các thao tác như mở file, hiển thị nội dung, lưu và các thao tác khác như xử lý chuỗi trong chương trình thông qua lớp chuỗi String. Bạn có thể sắp xếp, ghép nối mã hóa hiển thị từng từ, từng dòng và toàn bộ nội dung văn bản trong file text.
Chú ý:
- Đối tượng FileSystem cung cấp các hàm như FileOpen, LineInput, PrintLine, FileClose để thao tác với tập tin. Đối tượng này nằm trong không gian tên Microsoft.VisualBasic.
- Ngoài ra một số hàm trong không gian System.IO cũng có thể dùng bổ sung.
1. Hiển thị nội dung file Text bằng đối tượng TextBox
Cách đơn giản nhất để hiển thị một file text là dùng điều khiển textbox. Để nạp nội dung file text vào textbox ta dùng 4 hàm sau: FileOpen – Mở file để dọc hay ghi, LineInput – Đọc một dòng văn bản từ file, EOF – Kiểm tra xem con trỏ đã đến cuối file chưa, FileClose – Đóng file.
1.1. Mở file Text để đọc nội dung
Bạn có thể cho phép người dùng mở file text bằng cách hiển thị hộp thoại OpenfileDialog. Sau khi người dùng đã chọn file, hộp thoại sẽ trả về đường dẫn file đầy đủ thông qua thuộc tính filename.
1.2. Hàm FileOpen
Sau khi đã có tên file, bạn có thể dùng hàm FileOpen mở file để đọc hay ghi. Cú pháp hàm FileOpen như sau:
FileOpen(filenumber, pathname, mode)
Trong đó:
- filenumber: số nguyên từ 1 đến 255
- pathname: đường dẫn hợp lệ trỏ đến file cần mở
- mode: từ khóa cho biết chế độ mở (ví dụ OpenMode.Input là mở file để đọc và OpenMode.Output là mở file để ghi)
Số nguyên filenumber dùng để kết hợp với file khi nó được mở cho mục đích đọc ghi. Bạn dùng nó để tham chiếu đến file trong quá trình xử lý. Lưu ý là các số filenumber trong hàm FileOpen, LineInput, FileClose và EOF phải trùng nhau thì khi mở file mới không gây ra lỗi.
Ví dụ:
Chương trình TextBrowser sau sẽ minh họa cách mở một file text và cho hiển thị nó lên một ô textbox.
Tìm hiểu chương trình:
Chương trình bao gồm một menu File với hai mục chọn là Open cho phép mở file rồi hiển thị nội dung file text đó vào một textbox và mục Close để đóng file.
Thiết kế giao diện:
Bạn tạo một giải pháp mới và thêm vào dự án có tên TextBrowser và thiết kế giao diện như sau:
Trong đó các điều khiển có thuộc tính như sau:
- Textbox1: Enable – False, Multiline – True.
- OpenToolStripMenuItem: Enable – True
- CloseToolStripMenuItem: Enable – False
- Các điều khiển và thuộc tính khác như hình.
Viết mã:
Tạo thủ tục OpenToolStripMenuItem_Click như sau:
'Khai báo hai biến, một biến lưu toàn bộ văn bản
'một biến lưu từng dòng văn bản
Dim AllText, LineOfText As String
'Tạo bộ 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 từng 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 bản
TextBox1.Select(1, 0)
'Cho phép soạn thảo
TextBox1.Enabled = True
'Cho phép chọn mục Close trên menu
CloseToolStripMenuItem.Enabled = True
'Vô hiệu hóa mục Open trên 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 như sau:
Label1.Text = "Mở file văn bản bằng mục Open từ menu File"
TextBox1.Text = ""
OpenToolStripMenuItem.Enabled = True
CloseToolStripMenuItem.Enabled = False
Các bạn có thể đọc các dòng ghi chú màu xanh lá cây để biết công dụng của từng phát biểu của chương trình.
Chạy chương trình:
Các bạn ấn F5 để chạy chương trình và mở một file text bất kỳ để xem chương trình chạy.
Sử dụng lớp StreamReader để mở file Text
Ngoài các hàm mở đọc file như đã biết, chúng ta cũng có thể sử dụng lớp StreamReader của VB.NET để thực hiện chức năng tương tự. Để sử dụng lớp này ta cần đặt thêm khai báo Imports System.IO ở đầu chương trình.
Sau đây là thủ tục OpenToolStripMenuItem_Click đã được 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 có thể xem toàn bộ mã chương trình trong giải pháp TextBrowser1 của phần bài tập chương 12.
2. Tạo một file text mới
Tạo file text rất hữu ích khi bạn muốn ghi ra file .log, .ini hay readme. Các bước tổng quát để ghi một file text có thể như sau:
- Nhận dl nhập từ người dùng hay do chương trình tính ra
- Gán dl cho một hay nhiều biến. Ví dụ như gán nội dung textbox1 ra một biến
- Yêu cầu nhập tên file sẽ ghi ra bằng hộp thoại SaveFileDialog
- Sử dụng đường dẫn và tên file do hộp thoại SaveFileDialog trả về và gọi hàm ghi file
- Sử dụng hàm PrintLine để lưu nội dung biến xuống file
- Đóng file khi ghi xong
Ví dụ QuickNote sau đây sẽ minh họa việc tạo file text.
Tìm hiểu chương trình:
Chương trình gồm một ô textbox để chế dộ multiline hiện scrollbars cả 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 một file text với tên do người dùng nhập vào, mục Close đóng chương trình.
Thiết kế giao diện:
Bạn tạo một giải pháp mới và thêm vào một dự án có cùng tên là QuickNote rồi thiết kế giao diện như hình:
Viết mã:
Tạo thủ tục InsertDateToolStripMenuItem_Click như sau:
TextBox1.Text = DateString & vbCrLf & TextBox1.Text
TextBox1.Select(1, 0)
Tạo thủ tục SaveToolStripMenuItem_Click như 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 khi ghi")
Finally
FileClose(1)
End Try
End If
Chạy chương trình:
Bạn hãy chạy chương trình, ghi vào textbox những đoạn văn bản tùy ý hay có thể sao chép từ một file khác, chèn thêm ngày tháng và lưu vào một file nào đó (phải nhập tên file).
3. Xử lý chuỗi trong chương trình
Chuỗi là thông tin cần xử lý nhiều nhất trong mọi ngôn ngữ lập trình. Các thao tác xử lý sẽ học trong chương này bao gồm cắt chuỗi, nối chuỗi, tìm kiếm, sắp xếp, so sánh chuỗi,…
Việc nối chuỗi ta có toán tử & hay có thể dùng phương thức Concat của VB ví dụ:
Dim loichao as String
loichao = String.Concat(“Hello ”, “World, ”, “Hi Everyone!”)
Bạn có thể dùng các phương thức cũ như Mid, Ucase, Lcase…hay dùng các phương thức mới mà lớp String cung cấp như SubString, ToUpper, ToLower. Thường ta dùng các phương thức mới này hơn.
Bảng sau liệt kê các hàm xử lý chuỗi trong cả .NET và VB truyền thống:
.NET VB cũ Chức năng
ToUpper UCase Đổi toàn bộ chuỗi sang chữ hoa
ToLower LCase Đổi toàn bộ chuỗi sang chữ thường
Length Len Trả về chiều dài chuỗi
SubString Mid Cắt chuỗi con trong chuỗi cha
IndexOf InStr Xác định vị trí chuỗi con trong chuỗi cha
Trim Trim Cắt bỏ khoảng trắng trong chuỗi
Remove Loại bỏ khoảng trắng ở giữa chuỗi
Insert Chèn chuỗi con 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ột mã trong bảng mã ASCII. Bảng mã này có 255 mã. Sau này trong các hệ điều hành như WinXP, NT, 2000 thì chuẩn quốc tế qui định các bảng mã ký tự khác như Unicode. Trong bảng mã này mỗi mã ký tự chiếm 2 byte chứ không phải là 1 byte như trong ASCII. Việc sắp xếp các ký tự là dựa vào mã của ký tự đó. Chữ A mã 65 sẽ đứng trước chữ B có mã 66.
3.2. Làm việc với ký tự ASCII
Để xem một ký tự có mã ASCII là bao nhiêu có thể dùng hàm Asc, ví dụ:
Dim AscCode As Short
AscCode = Asc("A")
MsgBox(AscCode)
Ngược lại bạn có thể dùng hàm Chr() để biết ký tự nào tương ứng với một mã ASCII cho trước, ví dụ:
Dim letter As Char
letter = Chr(65)
MsgBox(letter)
Để so sánh chuỗi, bạn có thể dùng các toán tử sau: <>, =, >, <, >=, <=.
Một ký tự coi là lớn hơn nếu mã ASCII của nó lớn hơn, ví dụ “A” < “B” vì mã của “A” là 65 nhỏ hơn 66 là mã của “B”.
Khi so sánh hai chuỗi, VB sẽ so sánh lần lượt các ký tự từ đầu tiên đến tiếp theo cho đến khi gặp ký tự khác nhau. Nếu không có ký tự khác nhau thì chuỗi nào dài hơn, chuỗi đó lớn hơn.
3.3. Sắp xếp chuỗi trong ô TextBox
Chương trình SortText sau đây sẽ minh họa việc sắp xếp chuỗi bằng các toán tử so sánh chuỗi trong một ô textbox. Đây là chương trình được nâng cấp từ chương trình QuickNote.
Tìm hiểu chương trình:
Chương trình SortText này có một form chính. Form này có một menu File với 4 mục chọn. Mục chọn Open cho phép mở một file text, mục chọn Sort Text cho phép sắp xếp các dòng trong textbox theo thứ tự tăng dần, mục chọn Save cho phép lưu lại những thao tác đã thực hiện, mục chọn Close để đóng file.
Thiết kế giao diện:
Giao diện nó tương tự như chương trình QuickNote nhưng có thêm các mục chọn như đã liệt kê. Giao diện như hình:
Thuộc tính enable của textbox có giá trị là True để cho phép người dùng nhập văn bản cho chương trình sắp xếp. Nghĩa là chương trình có thể sắp xếp nội dung của một file text được chỉ định hay là người dùng trực tiếp nhập liệu vào.
Viết mã:
Trước hết ta thêm vào dự án một module có tên SortModule. Module này sẽ khai báo một mảng có tên strArr chứa các dòng của văn bản và chứa một hàm Sapxep() để sắp xếp các phần tử trong mảng theo thứ tự giảm dần. Nội dung module như sau:
Public strArr() As String
Sub Sapxep(ByRef mang() As String, ByVal sophantumang As Short)
Dim tam As String
Dim i, j, trungbinh As Short
'Sắp xếp các phần tử trong mảng mang()
'Mảng sắp xếp nhị phân theo thứ tự giảm dần
trungbinh = sophantumang \ 2
Do While trungbinh > 0
For i = trungbinh To sophantumang - 1
j = i - trungbinh + 1
For j = (i - trungbinh + 1) To 1 Step -trungbinh
If mang(j) <= mang(j + trungbinh) Then Exit For
tam = mang(j)
mang(j) = mang(j + trungbinh)
mang(j + trungbinh) = tam
Next j
Next i
trungbinh = trungbinh \ 2
Loop
End Sub
Ta có thể lưu lại nội dung module này để sử dụng trong các ví dụ sau.
Tiếp theo ta tạo thủ tục OpenToolStripMenuItem_Click như sau:
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 & vbCrLf
Loop
TextBox1.Text = All
TextBox1.Select(1, 0)
TextBox1.Enabled = True
OpenToolStripMenuItem.Enabled = False
CloseToolStripMenuItem.Enabled = True
SaveToolStripMenuItem.Enabled = True
Catch ex As Exception
MsgBox("Lỗi mở File!")
Finally
FileClose(1)
End Try
End If
Thủ tục CloseToolStripMenuItem_Click như sau:
TextBox1.Text = ""
CloseToolStripMenuItem.Enabled = False
OpenToolStripMenuItem.Enabled = True
SaveToolStripMenuItem.Enabled = False
TextBox1.Enabled = False
Thủ tục SaveToolStripMenuItem_Click :
OpenFileDialog1.Filter = "TEXT FILES (*.TXT) | *.TXT"
OpenFileDialog1.ShowDialog()
If OpenFileDialog1.FileName <> "" Then
Try
FileOpen(1, OpenFileDialog1.FileName, OpenMode.Output)
PrintLine(1, TextBox1.Text)
OpenToolStripMenuItem.Enabled = True
SaveToolStripMenuItem.Enabled = False
Catch ex As Exception
MsgBox("Lỗi ghi file!")
Finally
FileClose(1)
End Try
End If
Bây giờ ta tạo thủ tục SortTextToolStripMenuItem_Click:
Dim ln, curline, letter As String
Dim i, charsInFile, lineCount As Short
'Kiểm tra số dòng trong chuỗi
lineCount = 0
charsInFile = TextBox1.Text.Length 'Lấy chiều dài chuỗi
For i = 0 To charsInFile - 1 'Đếm từng ký tự
'Lấy nội dung
letter = TextBox1.Text.Substring(i, 1)
'Nếu là ký tự xuống dòng
If letter = Chr(13) Then
lineCount += 1
i += 1 'Bỏ qua ký tự 10 (10, 13 thường đi kèm)
End If
Next i
'Tạo mảng chứa các dòng văn bản
ReDim strArr(lineCount)
curline = 1
ln = ""
'Duyệt qua ký tự trong chuỗi
For i = 0 To charsInFile - 1
letter = TextBox1.Text.Substring(i, 1)
If letter = Chr(13) Then
curline += 1
i += 1
ln = ""
Else
'Đưa nội dòng vào mảng
ln = ln & letter
strArr(curline) = ln
End If
Next i
'Sắp xếp mảng
Sapxep(strArr, lineCount)
'Hiển thị mảng đã sắp xếp trở lại TextBox
TextBox1.Text = ""
curline = 1
For i = 1 To lineCount
TextBox1.Text = TextBox1.Text & _
strArr(curline) & vbCrLf
curline += 1
Next i
Chạy chương trình:
Bạn có thể chạy chương trình, mở một file text có sẵn hay tự mình nhập vào nội dung văn bản và tiến hành lưu lại.
Bạn có thể thấy chương trình vẫn còn một lỗi nhỏ. Bạn thử tìm ra và khắc phục xem sao.
Trong module trên, với thủ tục sapxep bạn có thể dùng giải thuật sắp xếp khác nếu muốn. Các thủ tục sắp xếp hay tìm kiếm đều có thể tìm thấy trong môn cấu trúc dữ liệu và giải thuật, các bạn có thể tham khảo thêm.
Mở rộng:
Bây giờ nhằm phục vụ các bạn ôn lại các thuật toán trong môn cấu trúc dữ liệu và giải thuật phần sắp xếp, mình sẽ cài đặt các thủ tục sắp xếp khác nhau như sắp xếp chọn (SelectionSort), sắp xếp chèn trực tiếp (Insertion Sort), sắp xếp nổi bọt (Bubble Sort)…
Sắp xếp chọn:
Sắp xếp chọn trong một mảng là chạy một vòng lặp từ đầu đến cuối mảng, chọn ra phần tử nhỏ nhất tiến hành đổi vị trí hai phần tử đó (thứ k) và phần tử thứ nhất. Vòng lặp lại tiếp tục như vậy từ phần tử thứ hai trở đi.
Thủ tục SelectionSort được cài đặt trong module sortmodule như sau:
'Sap xep theo phuong phap sap xep chon
Sub SelectionSort(ByRef mang() As String, _
ByVal sophantumang As Short)
Dim i, j, k As Short
For i = 1 To sophantumang - 1
k = i
For j = i + 1 To sophantumang
If (mang(j) < mang(k)) Then k = j
Next j
doicho(mang(i), mang(k))
Next i
End Sub
Trong đó thủ tục doicho() cài đặt:
'Thu tuc doi cho hai phan tu
Sub doicho(ByRef x As String, ByRef y As String)
Dim tam As String
tam = x
x = y
y = tam
End Sub
Để thực thi thủ tục sắp xếp theo phương pháp chọn này, trong chương trình thay vì câu gọi Sapxep(strArr, lineCount) thì bạn gọi SelectionSort(strArr, lineCount) và chạy chương trình. Kết quả không có gì thay đổi.
Sắp xếp chèn trực tiếp:
Sắp xếp chèn trực tiếp dựa trên ý tưởng như sau: coi mảng đó có đoạn đầu (i-1 phần tử) đã sắp xếp. Ta chạy vòng lặp từ phần tử tiếp theo (phần tử thứ i) và chèn các phần tử tiếp theo đó vào đoạn đầu sao cho theo trật tự qui định (tăng hay giảm). Vậy nếu muốn sắp xếp một mảng thì đoạn đầu tiên sẽ gồm một phần tử duy nhất a[0] và tiến hành chèn các phần tử từ a[1].
Việc chèn tiến hành như sau: lưu a[i] vào biến x. Cho biến j chạy từ đầu mảng (từ 1) và xét xem x < a[j]. Nếu đúng thì đẩy a[j] ra sau một vị trí và giảm j đi 1. Quá trình tiếp tục khi x>=a[j] hay j = 0 và đặt x vào vị trí j+1.
Thủ tục InsertionSort() được cài đặt trong SortModule như sau:
'Sap xep theo phuong phap chen truc tiep
Sub InsertionSort(ByRef mang() As String, _
ByVal sophantumang As Short)
Dim i, j As Short
Dim tam As String
For i = 1 To sophantumang
tam = mang(i)
j = i - 1
Do While ((tam < mang(j)) And (j > 0))
mang(j + 1) = mang(j)
j -= 1
Loop
mang(j + 1) = tam
Next
End Sub
Lúc này cũng tương tự như cách gọi trên, bạn gọi thủ tục này thay cho lời gọi thủ tục sắp xếp SelectionSort.Và kết quả không có gì thay đổi.
Sắp xếp nổi bọt:
Sắp xếp nổi bọt là sắp xếp bằng cách đi từ trái qua phải, nếu thấy hai phần tử liền kề nhau không đúng trật tự thì đổi chỗ. Quá trình đó cứ lặp đi lặp lại như vậy cho đến khi thu được dãy có trật tự tăng hay giảm theo ý muốn.
Thủ tục BubbleSort() được cài đặt trong SortModule như 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 > 0
For j = 1 To i - 1
If mang(j) > mang(j + 1) Then
doicho(mang(j), mang(j + 1))
End If
Next j
i -= 1
Loop
End Sub
Thủ tục đổi chỗ đã được khai báo trong module và trình bày trong phần trên. Bạn cũng thay lời gọi InsertiontSort bằng lời gọi thủ tục BubbleSort và xem kết quả có gì thay đổi không.
Sắp xếp nhanh QuickSort:
Sắp xếp trộn MergeSort:
4. Bảo vệ nội dung văn bản bằng cách mã hóa
Bây giờ chúng ta thử mã hóa những gì có trong ô textbox để chỉ mình bạn là người có thể đọc được. Ta dùng một giải thuật mã hóa làm xáo trộn văn bản và một thuật toán giải mã để đưa văn bản trở về trạng thái ban đầu.
4.1. Mã hóa tài liệu bằng cách thay đổi mã ASCII của các ký tự
Bây giờ chúng ta tạo chương trình mã hóa và tiến hành giải mã một file văn bả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 một ô textbox để hiển thị nội dung văn bản. Một menu File với các mục chọn: Open Encription File dùng để mở các file đã mã hóa; Encript File dùng để mã hóa nội dung văn bản có trong ô textbox; Decription File giải mã nội dung văn bản đã bị mã hóa; Save Encription lưu lại nội dung văn bản đã mã hóa vào một file; Close để đóng file và đưa ô textbox về trạng thái trắng.
Thiết kế giao diện:
Giao diện thiết kế như hình:
Các bạn tạo các điều khiển như hình và kéo các điều khiển khác gồm OpenFileDialog1 để mở file, MenuStrip1, SaveFileDialog1 để lưu file.
Các thuộc tính thay đổi như sau:
- Open Encription File: name là mnuOpenEncriptionFile
- Encript File: name là mnuEncriptionFile
- Decription File: name là mnuDecription
- Save Encription: name là mnuSaveEncription
- &Close: name là mnuClose
- TextBox: name là 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
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 Sub mnuEncriptionFile_Click(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles mnuEncriptionFile.Click
Dim Encript As String = ""
Dim letter As Char
Dim i, charsInFile As Short
charsInFile = txtDocument.Text.Length
For i = 0 To charsInFile - 1
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 trên ta mã hóa bằng cách tăng mã của ký tự trong bảng mã ASCII lên một bằng dòng lệnh:
Encript = Encript & Chr(Asc(letter) + 1)
Thủ tục giải mã:
Private Sub mnuDecription_Click(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles mnuDecription.Click
Dim i, charsInFile As Short
Dim letter As Char
Dim Decript As String = ""
charsInFile = txtDocument.Text.Length
For i = 0 To charsInFile - 1
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ã là tiến hành trừ mã của ký tự trong bảng mã ASCII đi 1 với dòng mã:
Decript = Decript & Chr(Asc(letter) - 1)
Chạy chương trình:
Bạn ấn F5 chạy chương trình và có thể mở file văn bản hay gõ nội dung vào textbox để mã hóa và giải mã. Điều này thật thú vị.
5. Sử dụng toán tử XOR trong mã hóa
Với cách mã hóa trên đây có rất nhiều hạn chế. Hạn chế đầu tiên đó là mã ASCII chỉ giới hạn từ 0-255, nếu cộng ra ngoài khoảng này thì chương tình sẽ gặp lỗi ngay.
Cách khắc phục là ta dùng toán tử XOR, khi XOR một số với một giá trị nào đó hai lần thì bạn sẽ nhận lại chính số đó.
Chúng ta hãy làm rõ điều này thông qua ví dụ XorEccriptionTextFile:
Tìm hiểu chương trình:
Chương trình có một textbox cho phép hiển thị cũng như nhập liệu văn bản; một menu File với ba mục chọn là Open Encription File cho phép mở file đã mã hóa. Khi mở file này chương trình sẽ yêu cầu người dùng nhập chính xác khóa đã dùng để mã hóa khi mã hóa.
Mục chọn thứ hai là Save Encription File. Mục này cho phép người dùng mã hóa nội dung văn bản gõ vào trong ô textbox. Chương trình sẽ đưa ra thông báo yêu cầu người dùng nhập vào một khóa dùng để mã hóa. Người dùng cần nhớ chính xác từ khóa này để giải mã file sau này.
Mục chọn Close sẽ đưa textbox về dạng trắng và hiện mục Open Encription File lên cho người dùng mở file, hoặc gõ văn bản vào ô textbox để làm sáng mục chọn Save.
Thiết kế giao diện:
Giao diện của chương trình như hình:
Bạn tạo giải pháp và thêm vào dự án cùng tên rồi thiết kế giao diện như hình.
Viết mã:
Tạo thủ tục mnuSaveEncriptionFile_Click mã hóa văn bản và lưu vào file:
Private Sub mnuSaveEncriptionFile_Click(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles mnuSaveEncriptionFile.Click
Dim letter As Char
Dim key As String
Dim i, charsInFile, code As Short
SaveFileDialog1.Filter = "TEXT FILES (*.TXT) | *.TXT"
SaveFileDialog1.ShowDialog()
If SaveFileDialog1.FileName <> "" Then
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 = 0 To charsInFile - 1
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 sẽ yêu cầu nhập vào một khóa bằng phát biểu:
key = InputBox("Nhap khoa ma hoa:")
Sau đó nó tiến hành XOR mã ASCII của ký tự với khóa và ghi vào file bằng phát biểu:
Print(1, Asc(letter) Xor code)
Thủ tục mnuOpenEncriptionFile_Click giải mã:
Private Sub mnuOpenEncriptionFile_Click(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles mnuOpenEncriptionFile.Click
Dim ch As Char
Dim key As String
Dim code, number As Short
Dim 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 này cũng tương tự. Trước hết yêu cầu nhập vào khóa đã dùng để mã hóa và sau đó tiến hành giải mã bằng cách XOR lại một lần nữa để thu được mã ASCII ban đầu và chuyển trở lại ký tự bằng hàm Chr:
ch = Chr(number Xor code)
Vậy là chương trình đã hoàn thành.
Chạy chương trình:
Bạn chạy chương trình, nhập vào textbox một đoạn văn bản bất kỳ:
Tiến hành mã hóa và lưu lại vào file có tên mahoa.txt với từ khóa là 123. File đó sẽ có nội dung như sau:
Bây giờ bạn đóng lại bằng cách chọn mục Close và mở lại file trên xem sao.
6. Tổng kết chương
Bạn có thể làm lại các bài tập đã thực hiện trong chương này.


markdown:
![ Bạo Tiếu Sủng Phi: Gia Ta Chờ Ngươi Bỏ Vợ](http://static.santruyen.com/medias/covers/57/57854_cover.jpg?time=1519082445)
![ Bạo Tiếu Sủng Phi: Gia Ta Chờ Ngươi Bỏ Vợ](http://static.santruyen.com/medias/covers/57/57854_cover.jpg?time=1519082445)
[Bạo Tiếu Sủng Phi: Gia Ta Chờ Ngươi Bỏ Vợ](http://santruyen.com/bao-tieu-sung-phi-gia-ta-cho-nguoi-bo-vo.html)
bởi Phạn Khuyết
# Chương 493: Thương chiến, hố đến vẫn là gia 1
Xông lên người, chính là đồng dạng nam trang trang điểm, cũng ăn mặc gọn gàng Tô Nguyệt Lạp.
“Đàn Nhi! Ngươi cuối cùng tới.” Nàng vừa lên đến, lập tức kéo lên Khúc Đàn Nhi tay nhỏ, mừng rỡ không thôi.
Mặc Liên Thành mi phong giật giật.
Là nữ nhân dắt nàng, được rồi, hắn nhẫn...
Lúc này, Tô Nguyệt Lạp cũng chú ý tới Mặc Liên Thành, hơi thấp đầu xem như hành lễ một cái.
Xuất môn ra ngoài, đoán chừng hắn cũng sẽ không muốn chính mình hô Vương Gia.
Tô Nguyệt Lạp một mặt vui sướng mà lôi kéo Khúc Đàn Nhi liền hướng bên ngoài đi, “Ngươi đến, làm sao không được tiến vào ta cửa hàng bên trong? Ngược lại đến nhân gia địa phương”
“Dừng lại! Tô lão bản, ngươi cái này là cái gì ý tứ? Đoạt khách nhân cướp được bản công tử trong tiệm đến?”
Đang lúc hai người vừa muốn bước ra Vọng Nguyệt Mễ Hành lúc, nhưng từ bên trong đi ra một cái tuổi trẻ nam nhân.
Lớn lên không tính đặc biệt anh tuấn, ngũ quan cũng không tính đặc biệt tinh xảo, nhưng là, lại vô cùng có cá tính, tự có một cỗ không nói ra được hấp dẫn người mị lực, đặc biệt là trên mặt mang chiêu bài thức người làm ăn, cái kia một loại cười, vốn lại lộ ra hai cái thuần khiết lúm đồng tiền nhỏ, rất khó cho người liên hệ lên | gian thương hai chữ.
Chỉ là, người quen biết đều rõ ràng, hắn là tiêu chuẩn gian | thương...
Tô Nguyệt Lạp sắc mặt một kém, “Cái gì gọi là đoạt khách nhân? Nàng là ta người!”
“...” Nào đó công tử sắc mặt một kém, lập tức chuyển hướng Khúc Đàn Nhi, lại trừng mắt về phía Nguyệt Lạp bắt lấy Khúc Đàn Nhi tay, địch ý xuất hiện tới. Mà cái này một loại không hiểu thấu địch ý, lại làm cho Mặc Liên Thành đồng tình, cũng trở thành xuất môn đến nay, hắn lần thứ nhất cảm thấy nhìn xem thuận mắt nam nhân.
Khúc Đàn Nhi lại nhạt quét cái kia nam nhân liếc mắt, “Nguyệt Lạp, cái này người nào đến?”
“Một cái nhàm chán người, không cần để ý.”
“Tốt, không để ý tới. Toàn bộ nghe ngươi.” Kết quả là, nào đó nữ cây quạt gảy nhẹ, sắc mị mị mà sờ Nguyệt Lạp khuôn mặt nhỏ một cái, “Chúng ta trở về phòng bên trong đàm luận, cẩn thận đàm luận...” Rõ ràng là thuần khiết tụ cũ, làm sao để cho nàng nói đến như thế mập mờ?
Có người sắc mặt biến... Không chỉ một cái, là hai cái.
Khúc Đàn Nhi dựng lấy Nguyệt Lạp bả vai, không nhìn một số người ra ngoài Vọng Nguyệt Mễ Hành.
Không bao lâu, Khúc Đàn Nhi cùng Mặc Liên Thành tiến vào Đàn Hương Mễ Phô.
Đồng thời, cũng hiểu rõ chân tướng.
Đơn giản là trên thị trường giá cả chiến, Nguyệt Lạp cau mày nói: “Đàn Nhi, ngươi nói làm sao bây giờ? Đối diện cái kia một nhà đã mở ba tháng. Mấy tháng trước lượng tiêu thụ không sai, ta liền tích không ít hàng, nhà kho đều đầy. Mà cung ứng hàng, nửa năm một nhóm, đám tiếp theo nhập hàng thời gian, còn chưa đủ một tháng. Đến lúc đó ta không đi thu, cũng liền bội ước, phải bồi thường ba thành tổn thất. Hơn nữa, về sau muốn tiếp tục làm cũng không dễ dàng.”
“Ngươi toàn bộ hàng, giá vốn bao nhiêu tiền? Bán xong lợi nhuận lại là bao nhiêu?”
“Ta nhìn xem.” Nguyệt Lạp sầu muộn mà xuất ra sổ sách, nói: “Toàn bộ hàng, chi phí là hai trăm bảy 10 vạn lượng, bán sạch mà nói, lãi ròng ích chí ít có một trăm hai mươi vạn. Hàng không có bán đi, cũng không có tiền lại nhập hàng.”
“Ngươi trước mắt trên tay quay vòng tài chính có bao nhiêu?”
“Hai mươi mấy vạn lượng đi.”
“Ừm, đủ.” Khúc Đàn Nhi cổ quái cười một tiếng.
Bên cạnh ngồi yên lặng một mực uống trà Mặc Liên Thành, không tên đánh một cái rùng mình, người nào lại phải xui xẻo? Không khỏi xuyên thấu qua cửa sổ, đồng tình nhìn tới đối diện buôn gạo cái nào đó nam nhân...
“Nguyệt Lạp, bọn hắn giá cả, kiếm tiền sao?”
“Không kiếm lời, vừa lúc là giá vốn, cũng không thua thiệt.”
“Vậy ngươi cũng hàng, bức đến bọn hắn lỗ vốn bán mới thôi.”
“Đàn Nhi, tại sao?”
“Làm theo. Rất nhanh ngươi liền sẽ rõ ràng.”
### Bình luận truyện
**Bạo Tiếu Sủng Phi: Gia Ta Chờ Ngươi Bỏ Vợ** ![](http://yeutre.vn/medias/data/avatars/s/0/1.jpg?time=1481688467852)
### Bình luận Facebook
![ Nam Cung Băng Như](http://static.santruyen.com/medias/avatars/56/56126.png?time=1519082445)
![ Nam Cung Băng Như](http://static.santruyen.com/medias/avatars/56/56126.png?time=1519082445)
##### đăng bởi
[Nam Cung Băng Như](http://santruyen.com/thanh-vien/nam-cung-bang-nhu-56126.html)
###### Danh sách chương
[Chương 473: Tiểu Thế Tử sinh ra 4](http://santruyen.com/bao-tieu-sung-phi-gia-ta-cho-nguoi-bo-vo-chuong-473-tieu-the-tu-sinh-ra-4-c684909.html) [Chương 474: Đế vị bí mật 1](http://santruyen.com/bao-tieu-sung-phi-gia-ta-cho-nguoi-bo-vo-chuong-474-de-vi-bi-mat-1-c684910.html) [Chương 475: Đế vị bí mật 2](http://santruyen.com/bao-tieu-sung-phi-gia-ta-cho-nguoi-bo-vo-chuong-475-de-vi-bi-mat-2-c684911.html) [Chương 476: Đế vị bí mật 3](http://santruyen.com/bao-tieu-sung-phi-gia-ta-cho-nguoi-bo-vo-chuong-476-de-vi-bi-mat-3-c684912.html) [Chương 477: Đế vị bí mật 4](http://santruyen.com/bao-tieu-sung-phi-gia-ta-cho-nguoi-bo-vo-chuong-477-de-vi-bi-mat-4-c684913.html) [Chương 478: Đế vị bí mật 5](http://santruyen.com/bao-tieu-sung-phi-gia-ta-cho-nguoi-bo-vo-chuong-478-de-vi-bi-mat-5-c684914.html) [Chương 479: Đế vị bí mật 6](http://santruyen.com/bao-tieu-sung-phi-gia-ta-cho-nguoi-bo-vo-chuong-479-de-vi-bi-mat-6-c684915.html) [Chương 480: Đưa đưa đưa, mỗi ngày đưa 1](http://santruyen.com/bao-tieu-sung-phi-gia-ta-cho-nguoi-bo-vo-chuong-480-dua-dua-dua-moi-ngay-dua-1-c684916.html) [Chương 481: Đưa đưa đưa, mỗi ngày đưa 2](http://santruyen.com/bao-tieu-sung-phi-gia-ta-cho-nguoi-bo-vo-chuong-481-dua-dua-dua-moi-ngay-dua-2-c684917.html) [Chương 482: Đưa đưa đưa, mỗi ngày đưa 3](http://santruyen.com/bao-tieu-sung-phi-gia-ta-cho-nguoi-bo-vo-chuong-482-dua-dua-dua-moi-ngay-dua-3-c690677.html) [Chương 483: Đưa đưa đưa, mỗi ngày đưa 4](http://santruyen.com/bao-tieu-sung-phi-gia-ta-cho-nguoi-bo-vo-chuong-483-dua-dua-dua-moi-ngay-dua-4-c690678.html) [Chương 484: Đưa đưa đưa, mỗi ngày đưa 5](http://santruyen.com/bao-tieu-sung-phi-gia-ta-cho-nguoi-bo-vo-chuong-484-dua-dua-dua-moi-ngay-dua-5-c690679.html) [Chương 485: Đưa đưa đưa, mỗi ngày đưa 6](http://santruyen.com/bao-tieu-sung-phi-gia-ta-cho-nguoi-bo-vo-chuong-485-dua-dua-dua-moi-ngay-dua-6-c690680.html) [Chương 486: Có tiền xài cũng là hoa 1](http://santruyen.com/bao-tieu-sung-phi-gia-ta-cho-nguoi-bo-vo-chuong-486-co-tien-xai-cung-la-hoa-1-c690681.html) [Chương 487: Có tiền xài cũng là hoa 2](http://santruyen.com/bao-tieu-sung-phi-gia-ta-cho-nguoi-bo-vo-chuong-487-co-tien-xai-cung-la-hoa-2-c690682.html) [Chương 488: Có tiền xài cũng là hoa 3](http://santruyen.com/bao-tieu-sung-phi-gia-ta-cho-nguoi-bo-vo-chuong-488-co-tien-xai-cung-la-hoa-3-c690683.html) [Chương 489: Có tiền xài cũng là hoa 4](http://santruyen.com/bao-tieu-sung-phi-gia-ta-cho-nguoi-bo-vo-chuong-489-co-tien-xai-cung-la-hoa-4-c690684.html) [Chương 490: Có tiền xài cũng là hoa 5](http://santruyen.com/bao-tieu-sung-phi-gia-ta-cho-nguoi-bo-vo-chuong-490-co-tien-xai-cung-la-hoa-5-c690685.html) [Chương 491: Có tiền xài cũng là hoa 6](http://santruyen.com/bao-tieu-sung-phi-gia-ta-cho-nguoi-bo-vo-chuong-491-co-tien-xai-cung-la-hoa-6-c690688.html) [Chương 492: Có tiền xài cũng là hoa 7](http://santruyen.com/bao-tieu-sung-phi-gia-ta-cho-nguoi-bo-vo-chuong-492-co-tien-xai-cung-la-hoa-7-c690689.html) [Chương 493: Thương chiến, hố đến vẫn là gia 1](http://santruyen.com/bao-tieu-sung-phi-gia-ta-cho-nguoi-bo-vo-chuong-493-thuong-chien-ho-den-van-la-gia-1-c690690.html) [Chương 494: Thương chiến, hố đến vẫn là gia 2](http://santruyen.com/bao-tieu-sung-phi-gia-ta-cho-nguoi-bo-vo-chuong-494-thuong-chien-ho-den-van-la-gia-2-c690691.html) [Chương 495: Thương chiến, hố đến vẫn là gia 3](http://santruyen.com/bao-tieu-sung-phi-gia-ta-cho-nguoi-bo-vo-chuong-495-thuong-chien-ho-den-van-la-gia-3-c690692.html) [Chương 496: Thương chiến, hố đến vẫn là gia 4](http://santruyen.com/bao-tieu-sung-phi-gia-ta-cho-nguoi-bo-vo-chuong-496-thuong-chien-ho-den-van-la-gia-4-c690693.html) [Chương 497: Thương chiến, hố đến vẫn là gia 5](http://santruyen.com/bao-tieu-sung-phi-gia-ta-cho-nguoi-bo-vo-chuong-497-thuong-chien-ho-den-van-la-gia-5-c690694.html) [Chương 498: Thương chiến, hố đến vẫn là gia 6](http://santruyen.com/bao-tieu-sung-phi-gia-ta-cho-nguoi-bo-vo-chuong-498-thuong-chien-ho-den-van-la-gia-6-c690695.html) [Chương 499: Thương chiến, hố đến vẫn là gia 7](http://santruyen.com/bao-tieu-sung-phi-gia-ta-cho-nguoi-bo-vo-chuong-499-thuong-chien-ho-den-van-la-gia-7-c690696.html) [Chương 500: Lão quái vật xảy ra chuyện 1](http://santruyen.com/bao-tieu-sung-phi-gia-ta-cho-nguoi-bo-vo-chuong-500-lao-quai-vat-xay-ra-chuyen-1-c690697.html) [Chương 501: Lão quái vật xảy ra chuyện 2](http://santruyen.com/bao-tieu-sung-phi-gia-ta-cho-nguoi-bo-vo-chuong-501-lao-quai-vat-xay-ra-chuyen-2-c690698.html) [Chương 502: Lão quái vật xảy ra chuyện 3](http://santruyen.com/bao-tieu-sung-phi-gia-ta-cho-nguoi-bo-vo-chuong-502-lao-quai-vat-xay-ra-chuyen-3-c690699.html) [Chương 503: Lão quái vật xảy ra chuyện 4](http://santruyen.com/bao-tieu-sung-phi-gia-ta-cho-nguoi-bo-vo-chuong-503-lao-quai-vat-xay-ra-chuyen-4-c690701.html) [Chương 504: Lão quái vật xảy ra chuyện 5](http://santruyen.com/bao-tieu-sung-phi-gia-ta-cho-nguoi-bo-vo-chuong-504-lao-quai-vat-xay-ra-chuyen-5-c690702.html) [Chương 505: Lão quái vật xảy ra chuyện 6](http://santruyen.com/bao-tieu-sung-phi-gia-ta-cho-nguoi-bo-vo-chuong-505-lao-quai-vat-xay-ra-chuyen-6-c690703.html) [Chương 506: Tiểu phiên ngoại: Kinh Thành dị thường 1](http://santruyen.com/bao-tieu-sung-phi-gia-ta-cho-nguoi-bo-vo-chuong-506-tieu-phien-ngoai-kinh-thanh-di-thuong-1-c693655.html) [Chương 507: Tiểu phiên ngoại: Kinh Thành dị thường 2](http://santruyen.com/bao-tieu-sung-phi-gia-ta-cho-nguoi-bo-vo-chuong-507-tieu-phien-ngoai-kinh-thanh-di-thuong-2-c693656.html) [Chương 508: Tiểu phiên ngoại: Kinh Thành dị thường 3](http://santruyen.com/bao-tieu-sung-phi-gia-ta-cho-nguoi-bo-vo-chuong-508-tieu-phien-ngoai-kinh-thanh-di-thuong-3-c693657.html) [Chương 509: Đi nhầm không biết đại lục 1](http://santruyen.com/bao-tieu-sung-phi-gia-ta-cho-nguoi-bo-vo-chuong-509-di-nham-khong-biet-dai-luc-1-c693658.html) [Chương 510: Đi nhầm không biết đại lục 2](http://santruyen.com/bao-tieu-sung-phi-gia-ta-cho-nguoi-bo-vo-chuong-510-di-nham-khong-biet-dai-luc-2-c693659.html) [Chương 511: Đi nhầm không biết đại lục 3](http://santruyen.com/bao-tieu-sung-phi-gia-ta-cho-nguoi-bo-vo-chuong-511-di-nham-khong-biet-dai-luc-3-c693660.html) [Chương 512: Đi nhầm không biết đại lục 4](http://santruyen.com/bao-tieu-sung-phi-gia-ta-cho-nguoi-bo-vo-chuong-512-di-nham-khong-biet-dai-luc-4-c693661.html)
Nhấn Shift + Enter để xuống hàng. Nhấn Enter để đăng câu trả lời.

WARC-Type: response

Content-Type: application/http; msgtype=response

WARC-Truncated: length

WARC-Identified-Payload-Type: text/html

Server: nginx

Content-Type: text/html; charset=utf-8

Connection: close

Vary: Accept-Encoding

Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0

Pragma: no-cache


markdown:
trade gold forex thi nó khác với real ở chổ bạn phải tiếp tục đến hết cuộc thi ,còn real thì rút ra ngay. nếu bạn nghĩ nghĩ vào full thì 2k bạn vào được bao nhiêu và khi vào đúng thì liệu nó có quay về hay chạy luôn theo ý bạn?! với lại 2 điều khoản này thì e là khó mà vào full trên 2 tk
6- Tổng số lượng - khối lượng giao dịch tối thiểu tính tới thời điểm kết thúc cuộc thi: 10 giao dịch và 2 lots
11- Các tài khoản vi phạm quy định hoặc có tính cách không trung thực (giao dịch chuyển giá..., lỗi data ...) sẽ bị loại khỏi cuộc thi.
Có gì mời bạn qua đây trao đổi nhé
[http://sanvangthegioi.net/showthre...#post842396264]
Hơn nữa ko có bất kỳ rule gì về ql vốn thì nó mang tính đỏ đen quá cao, giả dụ điều 11 có thể loại được cơ chế hợp tác nhưng trong 50 người GD lung tung full hoặc gần full thì cuối cùng ít nhất cũng sót lại 3 4 người không cháy và tk có thể tăng gấp vài chục lần, nhiều người sẽ nghĩ ko biết mình bỏ 300k và thời gian 45 ngày tham gia cuộc thi này làm gì khi biết chắc chắn nếu GD chính thống sẽ ko win nổi còn ko GD chính thống thì chắc gì đã "hên" bằng người ta và sau 45 ngày ko rút ra đc bài học gì trong trading cả nếu ko GD kỷ luật ;)
như kẽm đã nói, neverdie cứ tìm 1 người để hợp tác xem có win không ! rồi những cuộc thi sau sẽ khắc phục . Vì chỉ là cuộc thi khởi động nên cần cụ thể hơn trong trading để những lần sau sẽ có rule khắc phục những tình huống phát xinh gây tranh cãi trong quá trình thi.
, Còn em thì ko làm thế, vì có làm thì cũng có người khác làm rồi mà có khi họ còn sử dụng bộ 4tk => X4 nữa hoặc hơn nữa cơ mình làm sao ăn đc
Em mỗi tháng vào không đủ 10 lệnh nên out từ vòng gửi xe
Cuộc thi nào dù có điều luật có chặt chẽ tới đâu chăng nữa thì cũng không thể làm vừa lòng tất cả mọi người. Do đó BQT sẽ tổ chức liên tục các cuộc thi với tiêu chí khác nhau để ngày càng phù hợp với số đông. Nếu ai đó cảm thấy nội dung cuộc thi này chưa thích hợp với phương pháp giao dịch của mình thì xin đợi các cuộc thi sau.
Cám ơn sự góp ý của các bạn.
Các bác cứ lo xa, Bản lĩnh trade thế nào thì cố gắng hết sức nhiêu đó đi. việc gì phải xoắn cả lên thế chứ. Bản lĩnh thật sự thì cần gì phải sợ chiêu với trò. em nói thế có đúng ko các bác.
Xin vợ tiền để thi mà vợ không cho,thôi đành làm khán giả hóng hớt các bác vậy!

Content-Type: text/html; charset=UTF-8

Server: Nginx

X-Powered-By: VPSSIM

X-Frame-Options: SAMEORIGIN

X-Content-Type-Options: nosniff

X-XSS-Protection: 1; mode=block


markdown:
**Child Life Essentials First Defense bảo vệ hệ miễn dịch**
**Hướng dẫn sử dụng:**
Với trẻ nhỏ hơn 1 tuổi: 1/2 thìa café ngày 3 lần
Với trẻ 1 đến 12 tuổi: 1-2 thìa café ngày 3 lần
Pha cùng với nước nước hoa quả hoặc dồ uống ưa thích của trẻ
**Mô tả sản phẩm:**
Sản phẩm First Defense là sản phẩm đặc biệt của ChildLife, được nghiên cứu kỹ lưỡng và là sản phẩm tốt nhất từ thảo mộc và khoáng chất, rất phù hợp và hiệu quả để bảo vệ cho hệ miễn dịch của trẻ. Sản phẩm First Defense an toàn cho trẻ em ở mọi lứa tuổi và có thể sử dụng ngay khi có triệu chứng cấp tính hoặc có nguy cơ nhiễm trùng, hoặc có thể dùng định kỳ để tăng sức đề kháng của cơ thể. Sản phẩm First Defense có công thức hoàn toàn tự nhiên. Một hệ miễn dịch khỏe mạnh là nền móng cho 1 cơ thể khỏe mạnh và 1 sức sống mạnh mẽ.
Ngày nay trẻ đang phải đối mặt với 2 vấn đề lớn mà trước đây chưa từng xảy ra. Một là, giá trị dinh dưỡng của thức ăn giảm do chất lượng đất xói mòn và việc sử dụng hóa chất bừa bãi. Hai là, môi trường ngày càng bị ô nhiễm và các chất độc hại ngày càng tăng, do đó nhu cầu về vitamin và khoáng chất là rất cần thiết. Chúng giúp bảo vệ, nuôi dưỡng và duy trì sức khỏe của trẻ. Ăn đúng cách và uống thêm ChildLife là cách tốt nhất cho sức khỏe của trẻ.
ChildLife là thức uống duy nhất giàu dinh dưỡng phù hợp cho trẻ nhỏ và trẻ sơ sinh, chế tạo bởi Homeopathic Pediatrician, Dr. Murray Clarke
Thành phần:
Colloidal Silver - 12 ppm (.001 micron, 99.9% pure)
Olive Leaf Extract - 80 mg
St. John's Wort - 20 mg
Larch Arabinogalactan - 15 mg
Zinc Gluconate - 8 mg

Vary: Accept-Encoding,User-Agent

Content-Type: text/html


markdown:
|Sim số đẹp||
|01236079777
|Giá bán||Sim đã bán|
|Mạng di động||
|![]()
0989 575.575 - 0932 33.8888
### Thông tin khách hàng - Vui lòng gõ tiếng việt có dấu
### Sim số đẹp đang được quan tâm
-
[-> 500,000](/sim-vinaphone-01235083777/) **01235 08 3777**
-
[-> 500,000](/sim-vinaphone-01236438777/) **01236 438 777**
-
[-> 500,000](/sim-vinaphone-01236439777/) **01236 439 777**
-
[-> 500,000](/sim-vinaphone-01236485777/) **01236 485 777**
-
[-> 600,000](/sim-vinaphone-01232572777/) **01232.572.777**
-
[-> 600,000](/sim-vinaphone-01232581777/) **01232.581.777**
-
[-> 600,000](/sim-vinaphone-01238632777/) **01238.632.777**
-
[-> 600,000](/sim-vinaphone-01238641777/) **01238.641.777**
-
[-> 600,000](/sim-vinaphone-01238643777/) **01238.643.777**
-
[-> 699,000](/sim-vinaphone-01232496777/) **01232.49.6777**
-
[-> 699,000](/sim-vinaphone-01232736777/) **01232.736.777**
-
[-> 700,000](/sim-vinaphone-01238540777/) **01238.540.777**
-
[-> 720,000](/sim-vinaphone-01235362777/) **01235 362777**
-
[-> 720,000](/sim-vinaphone-01236042777/) **01236 042777**
-
[-> 720,000](/sim-vinaphone-01238125777/) **01238 125777**
-
[-> 730,000](/sim-vinaphone-01232786777/) **01232 786777**
-
[-> 799,000](/sim-vinaphone-01232484777/) **01232.484.777**
-
[-> 799,000](/sim-vinaphone-01235024777/) **01235.024.777**
-
[-> 800,000](/sim-vinaphone-01232101777/) **01232.101.777**
-
[-> 800,000](/sim-vinaphone-01232102777/) **01232.102.777**
-
[-> 800,000](/sim-vinaphone-01232103777/) **01232.103.777**
-
[-> 800,000](/sim-vinaphone-01232105777/) **01232.105.777**
-
[-> 800,000](/sim-vinaphone-01232106777/) **01232.106.777**
-
[-> 800,000](/sim-vinaphone-01232109777/) **01232.109.777**
-
[-> 800,000](/sim-vinaphone-01232112777/) **01232.112.777**
-
[-> 800,000](/sim-vinaphone-01232113777/) **01232.113.777**
-
[-> 800,000](/sim-vinaphone-01232128777/) **01232.128.777**
-
[-> 800,000](/sim-vinaphone-01232132777/) **01232.132.777**
-
[-> 800,000](/sim-vinaphone-01232138777/) **01232.138.777**
-
[-> 800,000](/sim-vinaphone-01232139777/) **01232.139.777**
-
[-> 800,000](/sim-vinaphone-01232150777/) **01232.150.777**
-
[-> 800,000](/sim-vinaphone-01232151777/) **01232.151.777**
-
[-> 800,000](/sim-vinaphone-01232153777/) **01232.153.777**
-
[-> 800,000](/sim-vinaphone-01232158777/) **01232.158.777**
-
[-> 800,000](/sim-vinaphone-01232160777/) **01232.160.777**
-
[-> 800,000](/sim-vinaphone-01232162777/) **01232.162.777**
-
[-> 800,000](/sim-vinaphone-01232163777/) **01232.163.777**
-
[-> 800,000](/sim-vinaphone-01232168777/) **01232.168.777**
-
[-> 800,000](/sim-vinaphone-01232169777/) **01232.169.777**
-
[-> 800,000](/sim-vinaphone-01232173777/) **01232.173.777**
-
[-> 800,000](/sim-vinaphone-01232175777/) **01232.175.777**
-
[-> 800,000](/sim-vinaphone-01232176777/) **01232.176.777**
-
[-> 800,000](/sim-vinaphone-01232178777/) **01232.178.777**
-
[-> 800,000](/sim-vinaphone-01232180777/) **01232.180.777**
-
[-> 800,000](/sim-vinaphone-01232182777/) **01232.182.777**
-
[-> 800,000](/sim-vinaphone-01232183777/) **01232.183.777**
-
[-> 800,000](/sim-vinaphone-01232185777/) **01232.185.777**
-
[-> 800,000](/sim-vinaphone-01232188777/) **01232.188.777**
-
[-> 800,000](/sim-vinaphone-01232189777/) **01232.189.777**
-
[-> 800,000](/sim-vinaphone-01232190777/) **01232.190.777**
-
[-> 800,000](/sim-vinaphone-01232192777/) **01232.192.777**
-
[-> 800,000](/sim-vinaphone-01232193777/) **01232.193.777**
-
[-> 800,000](/sim-vinaphone-01232195777/) **01232.195.777**
-
[-> 800,000](/sim-vinaphone-01232196777/) **01232.196.777**
-
[-> 800,000](/sim-vinaphone-01232198777/) **01232.198.777**
-
[-> 800,000](/sim-vinaphone-01232199777/) **01232.199.777**
-
[-> 800,000](/sim-vinaphone-01232203777/) **01232.203.777**
-
[-> 800,000](/sim-vinaphone-01232205777/) **01232.205.777**
-
[-> 800,000](/sim-vinaphone-01232209777/) **01232.209.777**
-
[-> 800,000](/sim-vinaphone-01232213777/) **01232.213.777**

Server: Apache

Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0, public, public


markdown:
##
[Sim Vietnamobile đầu số 092 tại Phường 9 Quận Tân Bình TPHCM](http://simsodepdanang.so09.net/2014/04/sim-vietnamobile-au-so-092-tai-phuong-9.html)
Sim Vietnamobile Giá bán VND
|0928111555||11.900.000|
|0926110110||11.850.000|
|0928888877||11.700.000|
|0926466466||11.550.000|
|0927111555||11.500.000|
|0928111555||11.200.000|
|0925366789||11.000.000|
|0926665678||11.000.000|
|0923199199||11.000.000|
|0927111555||10.800.000|
|0925666886||10.000.000|
|0926906789||10.000.000|
|0925206789||10.000.000|
|0928978978||10.000.000|
|0925555592||10.000.000|
|0928909289||10.000.000|
|0923688788||10.000.000|
|0922330330||10.000.000|
|0922855558||10.000.000|
|0928362222||9.999.000|
Bấm chuột để liên hệ hoặc xem thêm:
**sim so dep 092**
## 0 nhận xét:
## Đăng nhận xét

WARC-Identified-Payload-Type: application/xhtml+xml

Server: GSE

Cache-Control: private, max-age=0


markdown:
Sáng ngày 03/02/2018, xã Vĩnh Thủy đã tổ chức lễ phát động toàn dân “ Xây dựng xã nông thôn mới kiểu mẫu” và sự kiện Đảng bộ 40 năm liên tục đạt danh hiệu trong sạch, vững mạnh. Đến dự có Đ/c Võ Văn Hưng, Giám đốc Sở Nông nghiệp và Phát triển nông thôn, Phụ trách Chương trình MTQG xây dựng nông thôn mới tỉnh; Đại diện lãnh đạo của huyện ủy, UBND cùng các Ban, ngành trong huyện; Lãnh đạo Đảng bộ, UBND và đông đảo nhân dân xã Vĩnh Thủy.
Ngày 7/10/2017, xã Hải Tân, huyện Hải Lăng tổ chức lễ đón nhận danh hiệu xã đạt chuẩn nông thôn mới. Đến dự có đồng chí Hà Sỹ Đồng, TUV, Phó Chủ tịch UBND tỉnh, Phó trưởng Ban Thường trực Ban chỉ đạo Chương trình xây dựng Nông thôn mới (NTM) tỉnh; đại diện lãnh đạo các sở, ban ngành cấp tỉnh; lãnh đạo huyện Hải Lăng cùng đông đảo cán bộ, đảng viên và nhân dân xã Hải Tân.
Tối 7/8/2017, xã Cam Thủy (huyện Cam Lộ) tổ chức lễ đón nhận danh hiệu xã đạt chuẩn nông thôn mới 2016 và danh hiệu xã điển hình văn hóa giai đoạn 2012 – 2017. Đến dự có đồng chí Hà Sỹ Đồng, TUV, Phó Chủ tịch UBND tỉnh, Phó Trưởng Ban chỉ đạo Chương trình xây dựng nông thôn mới tỉnh; lãnh đạo các Sở, ban ngành cấp tỉnh cùng đông đảo người dân địa phương.
Ngày 22/7/2017, xã Triệu Đại (huyện Triệu Phong) tổ chức lễ đón nhận bằng công nhận xã đạt chuẩn nông thôn mới (NTM) năm 2016. Đến dự có các đồng chí: Thái Văn Hoạt, UVTVTU, Chủ nhiệm Ủy ban kiểm tra Tỉnh ủy; Hà Sỹ Đồng, TUV, Phó Chủ tịch UBND tỉnh, Phó Trưởng Ban Thường trực Ban chỉ đạo xây dựng NTM tỉnh; lãnh đạo các Sở, ban ngành cấp tỉnh cùng đông đảo người dân địa phương.
Tại Hội nghị Ban chấp hành Đảng bộ tỉnh Quảng Trị lần thứ 9 (khóa XVI) diễn ra vào ngày 19/4/2017, một trong những nội dung quan trọng được các đại biểu tập trung bàn thảo, đóng góp nhiều ý kiến đó là Dự thảo Nghị quyết về đẩy mạnh cơ cấu lại nông nghiệp gắn với thực hiện Chương trình mục tiêu quốc gia xây dựng nông thôn mới (NTM) tỉnh Quảng Trị giai đoạn 2017-2020, định hướng đến năm 2025.
Ngày 25/4/2017, đồng chí Nguyễn Hữu Dũng, UVTV Tỉnh ủy, Chủ tịch UBMTTQVN tỉnh có buổi làm việc với Văn phòng điều phối Nông thôn mới của tỉnh về phối hợp trong thực hiện Chương trình MTQG xây dựng nông thôn mới.
Thực hiện chương trình mục tiêu quốc gia xây dựng nông thôn mới (NTM), Triệu Thành là một trong ba xã được huyện Triệu Phong chọn làm điểm chỉ đạo xây dựng đạt chuẩn NTM giai đoạn 2011- 2015. Kế thừa và phát huy truyền thống thi đua yêu nước của địa phương; được sự quan tâm chỉ đạo, giúp đỡ của cấp trên và sự lãnh đạo, chỉ đạo kịp thời sát sao của cấp ủy Đảng, chính quyền, Mặt trận Tổ quốc và các đoàn thể chính trị- xã hội, sự đồng thuận, hưởng ứng nhiệt tình của các tầng lớp nhân dân, nên diện mạo NTM xã Triệu Thành có những chuyển biến tích cực.
Ngày 28/2/2017, UBND tỉnh tổ chức họp thẩm định, xét công nhận xã đạt chuẩn nông thôn mới (NTM) cho các xã: Cam Thành, Cam Chính, Cam Thủy (huyện Cam Lộ) và Triệu Đại (huyện Triệu Phong). Đồng chí Hà Sỹ Đồng, TUV, Phó Chủ tịch UBND tỉnh, Chủ tịch Hội đồng thẩm định, xét công nhận xã đạt chuẩn NTM tỉnh chủ trì cuộc họp.
Ngày 30-9, tại Hà Nội, Thủ tướng Nguyễn Xuân Phúc đã dự và chỉ đạo Hội nghị toàn quốc triển khai Chương trình mục tiêu quốc gia xây dựng nông thôn mới và phát động phong trào thi đua “Cả nước chung sức xây dựng nông thôn mới” giai đoạn 2016-2020.
Ngày 5/10/2016, tại xã Triệu Đại, UBMTTQVN huyện Triệu Phong tổ chức lễ phát động cuộc vận động “Toàn dân đoàn kết xây dựng nông thôn mới, đô thị văn minh” giai đoạn 2016-2020. Đồng chí Nguyễn Hữu Dũng, UVTV Tỉnh ủy, Chủ tịch UBMTTQVN tỉnh đến dự buổi lễ.
Ngày 30/9/2016, Chính phủ tổ chức hội nghị trực tuyến triển khai chương trình mục tiêu Quốc gia (MTQG) xây dựng nông thôn mới và phát động phong trào thi đua cả nước chung sức xây dựng nông thôn mới (NTM) giai đoạn 2016-2020. Dự và chỉ đạo hội nghị có Thủ tướng Chính phủ Nguyễn Xuân Phúc; Phó Thủ tướng Vương Đình Huệ, Trưởng Ban Chỉ đạo Trung ương Các chương trình mục tiêu Quốc gia giai đoạn 2016-2020 (Ban Chỉ đạo); Bộ trưởng Nông nghiệp và Phát triển nông thôn Nguyễn Xuân Cường, Phó Trưởng Ban Chỉ đạo.
Tỉnh Quảng Trị triển khai thực hiện Chương trình MTQG xây dựng nông thôn mới (NTM) tại 117 xã, trong đó, có 1 xã chỉ đạo điểm của Trung ương, 8 xã điểm của tỉnh, 21 xã điểm của huyện. Hiện nay, toàn tỉnh có 18 xã đón nhận Bằng công nhận đạt chuẩn NTM giai đoạn 2011-2015. Thành công ban đầu trong quá trình xây dựng NTM là động lực để các xã đạt chuẩn NTM phát huy hơn nữa những kết quả đạt được, từng bước nâng cao chất lượng các tiêu chí nông thôn mới.
Dù không được chọn làm xã điểm thực hiện Chương trình mục tiêu quốc gia (MTQG) xây dựng nông thôn mới (NTM), nhưng bằng sự nỗ lực vượt bậc, xã Vĩnh Thành (huyện Vĩnh Linh, Quảng Trị) đã hoàn thành 19/19 tiêu chí xây dựng NTM vào cuối năm 2015. Ngày 7/8/2016, xã Vĩnh Thành được UBND tỉnh trao bằng công nhận xã đạt chuẩn NTM.
Đến hết năm 2015, tỉnh Quảng Trị có thêm 15 xã được công nhận đạt chuẩn xây dựng nông thôn mới (NTM) gồm: Hải Thượng, Hải Phú (huyện Hải Lăng); Triệu Trạch, Triệu Phước, Triệu Thuận, Triệu Thành (huyện Triệu Phong); Gio Sơn (Gio Linh); Vĩnh Thành, Vĩnh Nam, Vĩnh Lâm, Vĩnh Hiền (huyện Vĩnh Linh); Cam An (huyện Cam Lộ); Tân Hợp, Tân Liên (huyện Hướng Hóa) và Hải Lệ (thị xã Quảng Trị), nâng số xã đạt chuẩn trong toàn tỉnh lên 18 xã, đạt tỷ lệ 15,4%. Đến 30/6/2016, toàn tỉnh có 11 xã đạt từ 15 - 18 tiêu chí; 51 xã đạt từ 10 -14 tiêu chí; 37 xã đạt từ 5 - 9 tiêu chí. Qua hơn 5 năm xây dựng NTM đã huy động nguồn lực trên 7.000 tỷ đồng để đầu tư cho nông nghiệp, nông dân, nông thôn, trong đó nhân dân đóng góp trên 1.100 tỷ đồng.
Ngày 7/8/2016, xã Vĩnh Thành (huyện Vĩnh Linh) tổ chức kỷ niệm 20 năm đón nhận danh hiệu “Anh hùng Lực lượng vũ trang nhân dân” và đón nhận bằng công nhận đạt chuẩn nông thôn mới. Đến dự có các đồng chí: Hồ Thị Thu Hằng, UVTVTU, Trưởng Ban Tuyên giáo Tỉnh ủy; Hà Sỹ Đồng, TUV, Phó Chủ tịch UBND tỉnh; Phó Trưởng Ban Thường trực Ban Chỉ đạo Chương trình mục tiêu quốc gia xây dựng nông thôn mới tỉnh; đại diện lãnh đạo một số sở, ban, ngành cấp tỉnh; lãnh đạo huyện Vĩnh Linh cùng đông đảo cán bộ, đảng viên và nhân dân địa phương.
Ngày 22/6/2016, xã Triệu Thuận, huyện Triệu Phong tổ chức lễ đón nhận bằng công nhận xã đạt chuẩn nông thôn mới. Tham dự có đồng chí Hà Sỹ Đồng, TUV, Phó Chủ tịch UBND tỉnh, Phó Trưởng Ban Thường trực Ban Chỉ đạo Chương trình mục tiêu quốc gia xây dựng nông thôn mới tỉnh; đại diện lãnh đạo một số sở, ban, ngành cấp tỉnh; lãnh đạo huyện Triệu Phong cùng đông đảo cán bộ, đảng viên và nhân dân địa phương.
Ngày 19/5/2016, Văn phòng Chương trình Hạnh phúc Quảng Trị tổ chức khai giảng lớp tập huấn tại chỗ về kiến thức xây dựng nông thôn mới (NTM) cho cán bộ cơ sở các xã NTM nằm trong vùng dự án. Dự lễ khai giảng có đồng chí Hà Sỹ Đồng, TUV, Phó Chủ tịch UBND tỉnh, trưởng Ban chỉ đạo Chương trình Hạnh phúc Quảng Trị.
Ngày 5-4, Thủ tướng Chính phủ ban hành Quyết định số 558/QĐ-TTg về tiêu chí huyện nông thôn mới và quy định thị xã, thành phố trực thuộc cấp tỉnh hoàn thành nhiệm vụ xây dựng nông thôn mới.
Tân Hợp là 1 trong 7 xã thuộc vùng kinh tế mới Đường 9 huyện Hướng Hóa (Quảng Trị). Địa bàn dân cư được bố trí theo trục Quốc lộ 9 gần 3,5 km, đường Hồ Chí Minh hơn 4 km. Toàn xã có 5 thôn với 1.105 hộ, 4.829 khẩu trong đó dân tộc Vân Kiều, Pa Kô chiếm 4,6% dân số; còn lại là người Kinh.
Ngày 14/3/2016, UBND tỉnh có buổi làm việc với UBND huyện Triệu Phong về kế hoạch thực hiện Chương trình MTQG xây dựng nông thôn mới năm 2016 gắn với tái cơ cấu ngành nông nghiệp trên địa bàn huyện và giải quyết vấn đề đất rừng Tây Triệu Phong của Công ty Lâm nghiệp Triệu Hải. Đồng chí Hà Sỹ Đồng, TUV, Phó Chủ tịch UBND tỉnh chủ trì buổi làm việc.

Connection: keep-alive

Cache-Control: no-cache, pre-check=0, post-check=0

Set-Cookie: nv4c_j028Q_statistic_vi=YW5hnmaeaWmUcQ%2C%2C; expires=Mon, 19-Feb-2018 23:52:09 GMT; Max-Age=1800; path=/; domain=.sonongnghiep.quangtri.gov.vn; httponly

Content-Language: vi


markdown: {{story.pub_date_formatted}} • {{priceForStory(story)}} {{story.title}} {{story.subtitle}} {{previewVisibleOnlyTextForStory(story)}}

X-Mode-Override: free

X-Cache: MISS

Server: Apache/2.2.34 (Amazon)

Connection: Close

Via: 1.1 varnish-v4

Accept-Ranges: bytes

Cache-Control: max-age=60, public


markdown:
[Sari Town]là khu nhà phố thương mại ( [shophouse]) có thiết kế đa chức năng, là sự kết hợp hài hòa giữa nơi ở tiện nghi và không gian kinh doanh thuận tiện, giải quyết các bất cập của nhà phố truyền thống, nâng tầm tập quán kinh doanh truyền thống lên một đẳng cấp mới phù hợp với xu thế phát triển hiện nay.
Sari Town Đại Quang Minh với phối cảnh tuyệt đẹp.
### Hai mặt tiền thông thoáng, liền kề các khu tiện ích cao cấp
- Số lượng: 235 căn
- Số tầng: 1 tầng hầm + 4 tầng + áp mái
- Diện tích trung bình: 112-144m2/căn (5,6m x 20m)
- Diện tích sàn xây dựng: 560-720m2/căn
- Tận hưởng các tiện ích cao cấp của khu đô thị Sala: công viên tập trung, tuyến phố thương mại sầm uất, trường học quốc tế liên cấp, trung tâm thể dục thể thao, nhà văn hóa…
### Vị trí vàng ngay trung tâm Khu đô thị Sala – Thủ Thiêm
- Khu nhà phố thương mại Sari Town tọa lạc ngay tại khu vực trung tâm Khu đô thị Sala, liền kề công viên cảnh quan Sala rộng 5ha.
- Gần kề các khu căn hộ cao cấp và biệt thự đẳng cấp, các khu căn hộ dịch vụ, khách sạn, resort sang trọng; dễ dàng kết nối với trục đường huyết mạch Thủ Thiêm.
- Thuận tiện kết nối với các quận trung tâm thành phố (Quận 1, Quận 3, Quận 5), các quận lân cận (Quận 7, Quận 2, Quận 9, quận Bình Thạnh).
- Thuận tiện kết nối các tỉnh miền Đông và miền Tây qua trục đường chính Mai Chí Thọ (đại lộ Đông Tây cũ).
- Một dãy nhà phố thương mại sở hữu vị trí trung tâm của trung tâm, quý khách quan tâm vui lòng liên hệ chúng tôi để biết thêm thông tin chi tiết
Mặt bằng Sari Town, khu đô thị Sala Đại Quang Minh
### ĐẶC ĐIỂM NỔI BẬT
[NHÀ PHỐ THƯƠNG MẠI SARI TOWN](http://sunnylands.vn/sari-town-shophouse-nha-pho-thuong-mai-khu-thi-sala/)
- Sự kết hợp hoàn hảo giữa không gian kinh doanh và nơi ở tiện nghi
- Khu phố thương mại tập trung với các tuyến phố nối liền.
- Tọa lạc tại khu vực tập trung dân cư và du khách vui chơi sầm uất.
- Hai mặt tiền: mặt tiền trước lộ giới 24,6m và mặt tiền sau lộ giới 6m, thuận tiện cho việc kinh doanh buôn bán và vận chuyển hàng hóa.
- Vỉa hè rộng 5m liền kề hành lang thương mại (canopy) rộng 3m dành cho người đi bộ.
- Máy phát điện dự phòng 100%.
#### Kiến trúc
[Sari Town](http://sunnylands.vn/tag/saritown/) Sala
- Thiết kế hợp lý, hiện đại và tiện nghi, phù hợp với nhiều loại hình kinh doanh.
- Công trình đạt chất lượng thi công cao với việc giám sát chặt chẽ của Chủ đầu tư, công ty xây dựng uy tín.
- Trang thiết bị, vật liệu hoàn thiện cao cấp của những thương hiệu uy tín.
- Tầng hầm có hành lang chung rộng 6m và khu vực để xe riêng cho từng căn.
- Thang máy riêng cho từng căn.
Phối cảnh Sari Town, khu đô thị Sala Đại Quang Minh
Liên hệ:
**0934 07 22 88**


markdown:
**** ![ Dinh dưỡng ngày nay](http://tapchidinhduong.vn/templates/dinhduong/images/logo.png)
![ Dinh dưỡng ngày nay](http://tapchidinhduong.vn/templates/dinhduong/images/logo.png)
Thứ hai, 11 Tháng 9 2017 09:41
** Có những chất gây ung thư trong nhiều loại thực phẩm và khiến chúng ta khốn đốn. Trong đó có những loại thực phẩm rất phổ biến trong cuộc sống hàng ngày. ** **Đồ hộp. **Lớp lót của tất cả các thực phẩm đóng hộp được làm bằng hóa chất gọi là bisphenol-A hoặc BPA. Ngay cả khi phơi nhiễm với một lượng BPA nhỏ cũng có thể làm tăng nguy cơ gây ung thư vú, ung thư tiền liệt tuyến, vô sinh, dậy thì sớm, rối loạn chuyển hóa và đái tháo đường loại 2.
|
|![]()
**Dầu ăn chưa bão hòa.** Dầu ăn chưa bão hòa được dùng để bảo quản thực phẩm đã chế biến. Tuy nhiên, loại dầu này có thể ảnh hưởng tới các màng tế bào và có thể gây ung thư. Đây là một trong những thực phẩm hàng đầu gây ung thư.
|
|![]()
**Một số sản phẩm từ sữa.** Các chuyên gia đã khám phá ra mối liên hệ giữa lượng canxi cao và sự phát triển của ung thư tuyến tiền liệt. Điều này có thể là do các sản phẩm sữa giàu canxi có thể làm giảm 1,25 dihydroxyvitamin D3 trong cơ thể bạn. Hormone này được cho là để bảo vệ nam giới chống lại ung thư tuyến tiền liệt.
|
|![]()
**Thịt đỏ và thịt đã chế biến sẵn.** Những thực phẩm này chứa nhiều chất hóa học và chất bảo quản, bao gồm nitrat natri và chất gây ung thư nổi tiếng. Bạn cần tìm đến các sản phẩm hữu cơ và không có hormone.
|
|![]()
**Bánh mỳ:** Bánh mỳ, bánh nướng… đều là có khả năng gây ung thư vì có chứa kali bromat.
|
|![]()
**Đường tinh chế:** Các tế bào ung thư sử dụng đường làm thức ăn cho chúng lớn lên. Để phát triển, các tế bào ung thư sống bằng các chất ngọt giàu fructose.
|
|![]()
**Rượu.** Lạm dụng rượu cũng dẫn đến bệnh ung thư. Việc uống rượu nhiều là nguyên nhân chủ yếu gây ra các bệnh ung thư ở miệng, gan, trực tràng, ung thư vú…
|
|![]()
**Các thực phẩm chứa nhiều axit béo bão hòa: **Phụ nữ sau thời kỳ mãn kinh ăn nhiều chất béo bão hòa có nguy cơ ung thư vú cao hơn 30% so với người ăn ít. Những chất béo này có mặt trong mỡ động vật, phô mai, các món tráng miệng nhiều bơ… **Nguồn GDTĐ**

P3P: CP="NOI ADM DEV PSAi COM NAV OUR OTRo STP IND DEM"

Cache-Control: post-check=0, pre-check=0

Set-Cookie: dinhduong_tpl=dinhduong; expires=Sat, 09-Feb-2019 23:22:09 GMT; path=/

Vary: User-Agent

X-Content-Encoded-By: Joomla! 1.5


markdown:
− Sáng tác - Phê bình − Văn hóa - Du lịch
− Giáo dục - Xã hội
− Liên hệ
Tìm kiếm Tìm
© 2011 Tạp chí Sông Ba.com

Server: Vinahost


markdown:
Thông điệp:
Copy đường Link dưới đây gửi đến nick yahoo bạn bè!
| © phpBB | Free forum support | Liên hệ | Report an abuse | Free blog

P3P: CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT"

Cache-Control: no-cache


markdown:
Nhà hàng Thế giới Hải Sản tọa lạc tại Số 21 Liền kế Handico 30 - TP. Vinh - Nghệ An, với gần 600 chỗ ngồi, phong cảnh đẹp, đội ngũ nhân viên phục vụ hơn 30 người năng động chuyên nghiệp, tận tình chu đáo. Các thực đơn phong phú và đa dạng về chủng loại đặc biệt các món ăn hải sản ở mọi miền đất nước đã và đang làm hài lòng những vị khách khó tính nhất. Chính vì thế Thế giới Hải Sản đã nhận được rất nhiều lời khen ngợi của các bạn nước ngoài làm việc tại TP Vinh, những vị khách lần đầu tiên đến Nghệ An và đặc biệt một số lượng lớn những người đang cư trú ở Hà Nội và các vùng lân cận. Bạn hãy ghé qua thưởng thức một lần tôi chắc chắn là bạn không bao giờ quên !
Nhà Hàng Thế giới Hải Sản với diện tích gần 1000m2 nằm bên đường Lên nin cách sân bay TP Vinh 500m thuận tiện cho giao thông đi lại, khách du lịch sau khi tham quan, sau những chuyến bay, hay chờ những chuyến bay thì Thế giới Hải Sản là điểm dừng chân lý tưởng nhất. Khi đến đây bạn sẽ có thời gian yên tĩnh, ngắm cảnh, thư giản cho một hành trình mới.
Nhà hàng có số lượng chỗ ngồi đủ để tiếp đón những đoàn lớn: phòng rộng nhất chứa khoảng 130 khách, 1 phòng 50 khách, 3 phòng 20 -24 khách, 2 phòng 12,… tất đều có điều hoà và được thiết kế bằng kính trong suốt có thể ngắm khung cảnh ở ngoài. Khu vực sân vườn rất đẹp với sức chứa khoảng 240 khách, khu ban công tầng 2 sức chứa 60 khách,…. Đến với Thế giới Hải Sản là đến với đúng tên gọi, vừa thưởng thức những món ngon vừa nghe những bản nhạc dân tộc độc đáo.Nhà hàng có thể chuẩn bị những chương trình ca múa nhạc dân tộc, giao lưu với các văn nghệ sĩ, hát karaoke,…
Tại hệ thống siêu thị, chúng tôi cung cấp hơn 100 loại con hàng tươi sống, chất lượng loại 1, được đưa về từ những vùng biển trải dài khắp đất nước và được thả sống trong các bể kính, dưới sự giám sát nghiêm túc của đội ngũ kỹ sư thủy sản.
Tại hệ thống nhà hàng, chúng tôi phục vụ những món ăn ngon, được chế biến tinh tế, menu đa dạng, phong phú chắc chắn sẽ làm hài lòng thực khách.
Nhà hàng Thế giới Hải sảnĐịa chỉ: Số 21 Liền kế Handico 30 - TP. Vinh - Nghệ An.Tel: 0985.777.929 - 0976.737.888Email thegioihaisantuoi@gmail.com - Website: http://thegioihaisantuoi.com

Cache-Control: private

Content-Type: text/html; Charset=UTF-8


markdown:
# Gỏi bắp bò rau muống mầm.
Nếu tra thử công thức món ăn với rau mầm trên mạng thì sẽ thấy là phần lớn các tài liệu gộp chung “rau mầm” thành 1 nhóm. Điều này mình thấy không ổn lắm vì rau mầm mỗi loại có mùi vị riêng. Cho nên cũng như rau “trưởng thành”, mỗi thứ rau mầm sẽ cần đi với một “combi” nguyên liệu nhất định để tạo nên sự hài hòa về tổng thể cho cả món ăn.
Dễ ăn, nhanh và đơn giản nhất là ăn sống rau mầm theo kiểu salad, có thể trộn thêm ít dầu dấm hoặc làm sốt cà chua như giới thiệu trong bài trước. Nếu muốn rau mầm đậm đà và nhiều màu sắc hơn một chút nữa thì có thể trộn gỏi với các loại nguyên liệu khác. Có rất nhiều món gỏi khác nhau có thể dùng rau mầm. Và món đầu tiên mà mình muốn giới thiệu là
**gỏi bắp bò rau muống mầm**.
Cả hai vợ chồng mình đều rất rất thích món ăn này, làm đĩa to bao nhiêu cũng hết veo. Vừa rồi phải nhờ mua cả chục gói mầm rau muống gửi từ Việt Nam sang để có rau ăn dần. Hơi cầu kì trong công đoạn tìm nguyên liệu một chút thôi chứ còn các khâu trồng rau và chế biến món ăn thì đơn giản lắm, mà thành quả thì cực kì đáng mong chờ
**Nguyên liệu** (2 người ăn)
- 2
*00 gr rau muống mầm* *200 gram thịt bò bắp* *3 – 4 tép tỏi* *2 – 3 quả Ớt tươi (không bắt buộc)* *Chanh hoặc dấm* *Nước mắm, đường* *Bột canh/ bột gia vị hoặc muối* *1 thìa canh dầu ăn* *Hành phi giòn* **Cách làm** [1. Chuẩn bị nguyên liệu – Thu hoạch rau muống, bỏ rễ và vỏ hạt còn sót lại. Rửa sạch.](http://thegioiraumam.com/wp-content/uploads/2013/08/Rau-mam-rau-muong-1.jpg)
– Thịt bò để vào ngăn đá khoảng 45 – 60 phút cho cứng lại để thái cho dễ (
*đừng để lâu quá kẻo thịt bò sẽ đóng thành đá luôn*). Thái thịt thành lát mỏng. Ướp thịt bò với chút xíu bột canh hoặc muối, để 15 phút.
– Tỏi bóc vỏ, băm nhỏ. Ớt bỏ hạt, thái lát mỏng.
– Hành phi nếu không có sẵn thì có thể làm theo cách trong bài về
**cách phi hành giòn** (để ăn xôi xéo
).
2. Pha nước trộn gỏi:
– Cho khoảng 1 thìa canh đường vào bát. Vắt 1/2 quả chanh, thêm 1 thìa canh nước. Quấy tan. Nếm thử xem đã vừa chua ngọt chưa. Yêu cầu ở bước này là ta có món nước chanh ngon và đậm đà cả hai vị chua và ngọt.
– Thêm nước mắm đến khi thấy đủ mặn. Mình thường thêm từ 2/3 – 1 thìa canh nước mắm. Nhưng định lượng đường, chanh, mắm này sẽ thay đổi tùy vào loại mắm mà bạn dùng, và tùy khẩu vị của bạn nữa. Cách pha nước mắm này là cách đơn giản nhất mà mình thường dùng để pha nước mắm chấm nói chung vì nó giúp cho bạn không bị lẫn vị. Nước mắm chấm nên pha khoảng 1/2 bát con ăn cơm, có thể sẽ không dùng hết nhưng thừa một chút thì tốt hơn là thiếu. Nên pha các vị đậm hơn nước chấm nem/ bún chả một chút. Thêm ớt (nếu có dùng) vào nước mắm.
*
*Lưu ý: 1 thìa canh = 15 ml * 3.
3. Làm gỏi – Cho rau vào bát hoặc đĩa to, rộng. – Đun nóng dầu ăn trong chảo. Cho tỏi vào phi thơm. Cho thịt bò vào xào nhanh tay ở
**lửa to **trong khoảng 2 phút, bắc khỏi bếp ngay khi thịt bò chín tái. ** Xào thịt bò ở lửa rất to, trong chảo rất nóng và đảo nhanh tay sẽ giúp thịt bò mềm, không bị ra nước.*
– Đổ phần thịt bò xào nóng này lên trên rau. Dội phần nước chấm pha ở bước 2 lên. Trộn đều và nhẹ tay để rau không bị nát. Nếm lại, thêm mắm đường nếu thấy nhạt.
– Gắp gỏi ra dĩa, rắc hành phi lên trên. Dùng với cơm hoặc nhắm bia đều hợp.
*Yêu cầu thành phẩm: bò bắp mềm và giòn, ngấm gia vị đậm đà, rau muống tươi giòn ngọt, thơm mùi tỏi phi và giòn rụm của hành phi, nước chấm chua cay mặn ngọt đậm đà vừa ăn. Có thể thêm cả lạc rang giã dập nếu thích *
-Nguồn: Savourydays-
Món ăn thật đơn giản đúng không các bạn ! Hy vọng thực đơn trên làm hài lòng các thực khách.
Thế Giới Rau Mầm kính chúc các bạn thành công và ngon miệng !


markdown:
# Mẹo chọn giày Việt Nam xuất khẩu xịn cho những người tiêu dùng
Ngày: 29/07/2016 lúc 11:43AM
**Mẹo chọn giày Việt Nam xuất khẩu xịn cho người tiêu dùng**
Cùng với xu hướng tẩy chay hàng hóa Trung Quốc, trong những năm gần đây hàng Việt Nam xuất khẩu (VNXK) nổi lên như một trào lưu mới. Tuy nhiên 60-70% sản phẩm đang bày bán trên thị trường không phải là hàng VNXK xịn mà là hàng Tàu, hàng lên, trong đó bao gồm cả mặt hàng giày. Không chỉ người tiêu dùng Việt mà còn cả chủ shop kinh doanh cũng bị vây giữa ma trận hàng VNXK, rất khó phân biệt thật giả nếu không có kinh nghiệm. Tiền nào của nấy, nếu bạn bỏ ra một số tiền lớn mà lại mua phải những đôi giày nhái sẽ ảnh hưởng rất lớn đến hoạt động kinh doanh và tự đẩy khách hàng rời xa mình. Bên cạnh đó, chủ shop cũng cần xây dựng kiến thức giành cho chính khách hàng của mình để họ tin tưởng hơn vào hoạt động kinh doanh, vào chất lượng sản phẩm mà mình cung cấp. Hiểu rõ những điều này dùng, chúng tôi sẽ chia sẻ cho các bạn một vài bí kíp nhận biết
**giày Việt Nam xuất khẩu** xịn. **1. Giá sản phẩm**
Điều đầu tiên hãy chú ý tới giá cả của những đôi giày. Theo kinh nghiệm của một số chủ shop bán thường, thông thường những đôi giày VNXK xịn thường có giá không dưới 300.000VNĐ bởi dù bị lỗi nhưng chất lượng của chúng rất tốt. Vì vậy nếu bạn thấy những cửa hàng rao bán đồ VNXK mà có giá chỉ khoảng từ 100.000-200.000 VNĐ thì đừng dại dột tin tưởng.
**2. Kiểm tra nhãn mác**
Đây là khâu cực kỳ quan trọng giúp bạn có thể dễ dàng phân biệt được giày VNXK xịn và hàng fake, Tàu.
– Giày VNXK xịn bao giờ cũng phải có dòng chữ “Made in Vietnam” (có thể bằng nhiều thứ tiếng tùy nơi xuất nhưng đa số bằng tiếng Anh và Tây Ban Nha) trên lót giày, thành trong của giày hoặc in chìm trên đế giày. Bởi theo tiêu chuẩn bắt buộc của hàng xuất thì sản phẩm phải ghi rõ nơi sản xuất, đồng thời chúng phải được dập nổi hoặc chìm trên sản phẩm chứ không phải dán một cái tem ghi dòng chữ tương tự.
*Mẹo chọn giày Việt Nam xuất khẩu xịn cho những người mới bắt đầu kinh doanh*
– Đa số những đôi giày xịn (95%) mặt dưới đế và thành trong giày có in chìm: cỡ giày, chất liệu (da, da bóng vải…), tên thương hiệu, dòng Made in Vietnam và code mã hàng.
*Đôi giầy thương hiệu F.NIRVARA là hàng MADE IN VIETNAM chính hiệu có ghim rõ dòng chữ "DT0124-36". DT0124 là code mã hàng còn 36 là size đôi giày trong bức ảnh.*
– Hàng xịn phải có mắc ghi rõ cỡ giày tương đương với khu vực xuất đi EUR, USA, MEX,… Nó thường được in trên chất liệu cán mờ nhẹ chứ không bóng như mác giả. Giày xịn thường có móc nhỏ xíu gắn chắc dưới lót giày để trao dây mác giá, đôi khi còn đính kèm túi nhỏ đựng một số phụ liệu thay thế.
– Ngoài ra bạn cũng cần chú ý đến tên thương hiệu hoặc logo trên giày. Thông thường chúng được làm một cách cẩu thả, thậm chí in sai. Bạn cần phải có một chút sự hiểu biết về các thương hiệu nổi tiếng để dễ dàng nhận biết hơn.
*Thương hiệu giày F.Rednex là giày chính hiệu MADE IN VIETNAM, dòng chữ thương hiệu được in rất rõ ràng chính giữa đôi giày.* **3. Kiểm tra màu sắc, chất liệu, kích cỡ**
– Về màu sắc: Có thể khẳng định giày VNXK bao giờ cũng “khôn màu” hơn (màu thật, rõ). Hàng giả màu sắc rất bóng bảy, trông không “thật’.
– Hãy chú ý đến từng đường kim mũi chỉ, chỗ dán xem có bị lệch hay bong không. Hàng giả thường không được gia công tỉ mỉ, mũi khâu không đều không chắc chắn, thậm chí keo dán còn bị sùi ra bên ngoài, nước sơn bong tróc nhất là gót giày và phần khâu cuối gót.
– Về hình dáng hàng giả thường có phom cứng, thô, không chuẩn theo phom bàn chân như hàng thật. Giày xuất xịn có lót trong và lót ngoài khít, không bị lộ
– Ngoài ra giày VNXK xịn thường không có chuyện đủ size, đủ màu, đặc biệt là cực ít size giầy nhỏ.
**4. Kiểm tra bằng cách thử trực tiếp**
– Đặt hai chiếc giày, guốc trên một mặt phẳng để kiểm tra tính cân bằng. Nếu một trong hai chiếc không vững, nghiêng ngả nghĩa là hàng nhái bởi hàng VNXK xịn được gia công cẩn thận, rất chắc chắn.
– Bạn cần thử cả hai chiếc giày và đi lại một đoạn để bàn chân trực tiếp cảm nhận những yếu tố như: chiếc to chiếc bé (dù hiếm nhưng vẫn xảy ra); chiếc nặng chiếc nhẹ, cốt giày có cân bằng hai bên không, có cứa chân hay bị nhấc gót không. Đối với giày xịn thì khi bạn di chuyển sẽ không bị đau bởi thường được làm từ cao su tự nhiên, còn giày nhái làm bằng nhựa cứng không đàn hồi, không co giãn nên gây cảm giác đau khi đi lại.
Hi vọng với những thông tin hữu ích mà Bizweb cung cấp, các bạn sẽ là những người tiêu dùng thông minh, luôn lựa chọn được những sản phẩm và cửa hàng giày dép Việt Nam Xuất khẩu chất lượng tốt nhất.
Nguồn: http://blog.bizweb.vn/mach-nho-cac-meo-chon-giay-viet-nam-xuat-khau-xin/

Set-Cookie: _orig_referrer=; expires=Tue, 06-Mar-2018 23:56:25 GMT; path=/; HttpOnly

X-Page: article

X-Cache: miss

P3P: CP="NOI DSP COR NID ADMa OPTa OUR NOR"