• Vui lòng đọc nội qui diễn đàn để tránh bị xóa bài viết
  • Tìm kiếm trước khi đặt câu hỏi

Đọc/Ghi file text có mã Unicode

Các thủ thuật liên quan đến xử lý chuỗi và thời gian
User avatar
truongphu
VIP
VIP
Posts: 4778
Joined: Sun 04/11/2007 10:57 am
Location: Cam Đức, Khánh hòa
Has thanked: 14 times
Been thanked: 522 times

Đọc/Ghi file text có mã Unicode

Postby truongphu » Sat 29/03/2008 10:43 am

Thủ thuật: Đọc/Ghi file text có mã Unicode
Tác giả: truongphu
Mô tả: Đọc và ghi file text có mã Unicode


Muốn đọc và ghi được Unicode từ file text bạn phải dùng chế độ Binary để đọc và ghi file mới được.

Đọc file:

Code: Select all

  1. Private Sub Form_Load()
  2. Dim fNum As Long, B() As Byte, fp
  3.     fp = "C:\Mùa Thu Lá Bay.txt"
  4.     fNum = FreeFile()
  5.     Open fp For Binary Access Read As #fNum
  6.         ReDim B(LOF(fNum))
  7.     Get #fNum, , B
  8.     Close #fNum
  9.  
  10.     Dim arr, i As Integer, s As String
  11.     arr = Split(B, vbCrLf)
  12.      For i = 0 To UBound(arr)
  13.             s = s & arr(i) & vbCrLf
  14.      Next i
  15. TextBox1 = s
  16. End Sub

Hoặc

Code: Select all

  1. Private Sub Command1_Click()
  2. Dim noidung()  As Byte
  3.     Open "C:\1.txt" For Binary Access Read As #1
  4.         ReDim noidung(LOF(1))
  5.         Get #1, , noidung
  6.     Close #1
  7. TextBox1 = noidung
  8. TextBox1 = Right(TextBox1, Len(TextBox1) - 1)
  9. End Sub

Hoặc bằng VB Script

Code: Select all

  1. Private Sub Command2_Click()
  2. Set FSO = CreateObject("Scripting.FileSystemObject").OpenTextFile("C:\1.txt", 1, , -2)
  3.    TextBox1 = FSO.Readall
  4. End Sub


Ghi file:

Code: Select all

  1. Private Sub saveTextFile(str As String, fname As String)
  2. On Error Resume Next
  3.     Dim fNum As Long
  4.     Dim B() As Byte
  5.     If bFileExists(fname) Then
  6.         fNum = FreeFile()
  7.         Open fname For Binary Access Read As #fNum
  8.         ReDim B(LOF(fNum))
  9.         Get #fNum, , B
  10.         Close #fNum
  11.        
  12.         Dim arr, i As Integer, s As String
  13.         arr = Split(B, vbCrLf)
  14.         For i = 0 To UBound(arr)
  15.             s = s & arr(i) & vbCrLf
  16.         Next i
  17.         str = s & str
  18.     End If
  19.    
  20.     Kill fname
  21.  
  22.     fNum = FreeFile()
  23.     Open fname For Binary Access Write As #fNum
  24.         B = str
  25.     Put #fNum, , B
  26.    
  27.     Close #fNum
  28. End Sub

Hoặc

Code: Select all

  1. Private Sub Command3_Click()
  2. Open "C:\2.txt" For Binary As #1
  3.     Put #1, , Trim$(StrConv(TextBox1, vbUnicode))
  4. Close #1
  5. End Sub

Hoặc bằng VB Script

Code: Select all

  1. Private Sub Command4_Click()
  2. Set FSO = CreateObject("Scripting.FileSystemObject").CreateTextFile("C:\2.txt", True)
  3. Set FSO = Nothing
  4. Set FSO = CreateObject("Scripting.FileSystemObject").OpenTextFile("C:\2.txt", 2, , -1)
  5.           FSO.Write TextBox1
  6. End Sub

Hoặc ghi file từ Clipboard

Code: Select all

  1. Private Const CF_UNICODETEXT As Long = 13
  2. Private Declare Function OpenClipboard Lib "user32.dll" (ByVal hWnd As Long) As Long
  3. Private Declare Function CloseClipboard Lib "user32.dll" () As Long
  4. Private Declare Function GetClipboardData Lib "user32.dll" (ByVal wFormat As Long) As Long
  5. Private Declare Function IsClipboardFormatAvailable Lib "user32.dll" (ByVal wFormat As Long) As Long
  6. Private Declare Function lstrcpy Lib "kernel32.dll" Alias "lstrcpyW" (ByVal lpString1 As Long, ByVal lpString2 As
  7.  
  8. Long) As Long
  9. Private Declare Function GlobalLock Lib "kernel32.dll" (ByVal hMem As Long) As Long
  10. Private Declare Function GlobalUnlock Lib "kernel32.dll" (ByVal hMem As Long) As Long
  11. Private Declare Function GlobalSize Lib "kernel32" (ByVal hMem As Long) As Long
  12.  
  13. Private Function Get_clipboard() As String
  14.     Dim myStrPtr As Long, myLen As Long, myLock As Long, myData As String
  15.  
  16.     OpenClipboard 0&
  17.  
  18.     If IsClipboardFormatAvailable(CF_UNICODETEXT) = 0 Then MsgBox "Clipboard Text is not available now": Exit
  19.  
  20. Function
  21.  
  22.     myStrPtr = GetClipboardData(CF_UNICODETEXT)
  23.  
  24.     If myStrPtr = 0 Then
  25.         MsgBox "Failed to get Clipboard Text"
  26.     Else
  27.         myLock = GlobalLock(myStrPtr)
  28.         myLen = GlobalSize(myStrPtr)
  29.         myData = String$(myLen \ 2 - 1, vbNullChar)
  30.         lstrcpy StrPtr(myData), myLock
  31.         GlobalUnlock myStrPtr
  32.     End If
  33.  
  34.     CloseClipboard
  35.  
  36.     Get_clipboard = myData
  37. End Function
  38.  
  39. Private Sub Command5_Click()
  40. Open "C:\2.txt" For Binary As #1
  41.     Put #1, , Trim$(StrConv(Get_clipboard, vbUnicode))
  42. Close #1
  43. End Sub
Last edited by truongphu on Fri 30/05/2008 3:27 pm, edited 1 time in total.


o0o--truongphu--o0o

.........
Ghé thăm:
Chuyện Linh Tinh

Giang Hồ
Thành viên năng nổ
Thành viên năng nổ
Posts: 50
Joined: Sat 12/05/2007 2:36 pm
Location: http://vn-soft.net
Been thanked: 1 time
Contact:

Re: Đọc được Unicode từ file text

Postby Giang Hồ » Sun 20/04/2008 3:25 pm

Ngoài cách đọc ở dạng Binary còn có thể dùng Object để đọc và ghi cũng dc


Code: Select all

  1. Private Sub UniReadText(ByVal sFileName As String)
  2. Dim txt
  3.    Dim objStream As Object
  4.    Set objStream = CreateObject("Scripting.FileSystemObject").OpenTextFile(sFileName, 1, False, -2)
  5.       If (Not objStream Is Nothing) Then
  6.          With objStream
  7.             Open sFileName For Input As #1 ' Mo file.
  8.             Do While Not EOF(1)
  9.                 Line Input #1, txt
  10.                 txt = .ReadLine 'Doc tung dong
  11.             Loop
  12.             Close #1
  13.          .Close
  14.          End With
  15.          Set objStream = Nothing
  16.       End If
  17. End Sub
  18.  
  19.  
  20. Private Sub UniWriteText(ByVal sFileName As String)
  21. Dim txt As String
  22. txt = "caulacbovb.com"
  23. Dim i As Integer
  24. Dim objStream As Object
  25.       Set objStream = CreateObject("Scripting.FileSystemObject").OpenTextFile(sFileName, 2, True, -1)
  26.       If (Not objStream Is Nothing) Then
  27.          With objStream
  28.             .Write txt 'Ghi vao file
  29.             .Close
  30.          End With
  31.          Set objStream = Nothing
  32.       End If
  33. End Sub
Code chỉ một lần mà fix bug thì mãi mãi
-----------------------------------
VnSecurity 2008 - Bảo vệ máy tính theo phong cách của bạn
Website: http://vn-soft.net

User avatar
truongphu
VIP
VIP
Posts: 4778
Joined: Sun 04/11/2007 10:57 am
Location: Cam Đức, Khánh hòa
Has thanked: 14 times
Been thanked: 522 times

Re: Đọc được Unicode từ file text

Postby truongphu » Sun 20/04/2008 9:18 pm

Được đấy!

Cấu trúc thông thường là:

Code: Select all

  1.   Dim objStream, ff
  2.    Set objStream = CreateObject("Scripting.FileSystemObject")
  3.     Set ff = objStream.OpenTextFile("e:\win\desktop\aaa.txt", 1, False, -2)

Sẽ không chạy! do đọc không được mã Unicode
(đính chính hôm nay 21/4: chạy được, cái mới là Giang hồ viết gọn hơn)

vậy mà Giang Hồ viết:

Code: Select all

  1. Set objStream = CreateObject("Scripting.FileSystemObject").OpenTextFile("e:\win\desktop\aaa.txt", 1, False, -2)

Lại chạy êm, đọc được Unicode.
Đây là điều hôm nay tôi mới học.
Cảm ơn Giang Hồ
Last edited by truongphu on Mon 21/04/2008 1:01 pm, edited 1 time in total.
o0o--truongphu--o0o

.........
Ghé thăm:
Chuyện Linh Tinh

User avatar
truongphu
VIP
VIP
Posts: 4778
Joined: Sun 04/11/2007 10:57 am
Location: Cam Đức, Khánh hòa
Has thanked: 14 times
Been thanked: 522 times

Re: Đọc được Unicode từ file text

Postby truongphu » Mon 21/04/2008 12:58 pm

Hồi tối qua thiếu tỉnh táo và cẩn thận nên có bài viết trên, hôm nay xin đính chính với đoạn code sau:

Code: Select all

  1. Private Function ReadFileUni(FileName As String) As String
  2. Dim FSO
  3.    Set FSO = CreateObject("Scripting.FileSystemObject").OpenTextFile(FileName, 1, , -2)
  4.    ReadFileUni = FSO.Readall
  5.    Set FSO = Nothing
  6. End Function
  7. '''''''''''''''''
  8. Private Function WriteFileUni(FileName As String, Unistr As String)
  9. Dim FSO As Object    'tao 1 file mo'i rôi mo'i ghi vào
  10.       Set FSO = CreateObject("Scripting.FileSystemObject").CreateTextFile(FileName, True)
  11.       Set FSO = Nothing
  12.       Set FSO = CreateObject("Scripting.FileSystemObject").OpenTextFile(FileName, 2, , -1)
  13.           FSO.Write Unistr
  14.       Set FSO = Nothing
  15. End Function

:D : rất gọn phải không các bạn?
o0o--truongphu--o0o

.........
Ghé thăm:
Chuyện Linh Tinh

User avatar
VBNewbie
Thành viên tích cực
Thành viên tích cực
Posts: 113
Joined: Sat 29/03/2008 7:13 pm
Location: Computer
Been thanked: 3 times
Contact:

Re: Đọc được Unicode từ file text

Postby VBNewbie » Mon 21/04/2008 6:08 pm

Sao em chạy bị lỗi .
-------[[[[[[[ VMind - PM trắc nghiệm đa năng ]]]]]]]]------
http://vmind.co.cc/vmind
-------[[[[ Diễn đàn trí tuệ Việt Nam ! ]]]]]]]]-----
http://vmind.co.cc

User avatar
truongphu
VIP
VIP
Posts: 4778
Joined: Sun 04/11/2007 10:57 am
Location: Cam Đức, Khánh hòa
Has thanked: 14 times
Been thanked: 522 times

Re: Đọc được Unicode từ file text

Postby truongphu » Mon 21/04/2008 8:48 pm

Gởi VBNewbie
Lẽ ra tôi không viết dòng nầy, vì như các người khác, thế là OK (vì dễ quá mà! :D )
Tuy nhiên, trước đây, tôi cũng như bạn!
1- Ví dụ: khi bạn dùng dòng sau đây: "e:\win\desktop\aaa.txt" thì bảo đảm phải có đĩa e, phải có folder "win" và dưới nó là desktop, và phải có aaa.txt
2- tập tin aaa.txt bạn phải lưu dưới dạng Unicode chứ không phải dạng UTF8! và nội dung bạn phải gõ: "Bạn trương phú
Nhờ bạn trả lời...hi hi!"
3- Và sau đây là code (cũng như trên) để bạn vui: Phải có 1 TextBox1 hổ trợ Unicode (form 2.0) và set font = arial hay tahoma

Code: Select all

  1. Private Function ReadFileUni(FileName As String) As String
  2. Dim FSO
  3.    Set FSO = CreateObject("Scripting.FileSystemObject").OpenTextFile(FileName, 1, , -2)
  4.    ReadFileUni = FSO.Readall
  5.    Set FSO = Nothing
  6. End Function
  7.  
  8. Private Function WriteFileUni(FileName As String, Unistr As String)
  9. Dim FSO As Object    'tao 1 file mo'i rôi mo'i ghi vào
  10.       Set FSO = CreateObject("Scripting.FileSystemObject").CreateTextFile(FileName, True)
  11.       Set FSO = Nothing
  12.       Set FSO = CreateObject("Scripting.FileSystemObject").OpenTextFile(FileName, 2, , -1)
  13.           FSO.Write Unistr
  14.       Set FSO = Nothing
  15. End Function
  16.  
  17. Private Sub Form_Load()
  18. Dim aa
  19. TextBox1 = ReadFileUni("e:\win\desktop\aaa.txt")
  20. aa = WriteFileUni("e:\win\desktop\bbb.txt", TextBox1)
  21. End Sub
  22.  

Mong bạn vừa ý
o0o--truongphu--o0o

.........
Ghé thăm:
Chuyện Linh Tinh

User avatar
VBNewbie
Thành viên tích cực
Thành viên tích cực
Posts: 113
Joined: Sat 29/03/2008 7:13 pm
Location: Computer
Been thanked: 3 times
Contact:

Re: Đọc được Unicode từ file text

Postby VBNewbie » Tue 22/04/2008 11:28 am

Bạn chỉ mình cái cách Binary đó bạn có thể làm 1 project cho minh được không vì ở trên bạn khai biến bị lỗi tùm lum. Mong bạn khai báo rõ ràng hơn.
Thanks !
-------[[[[[[[ VMind - PM trắc nghiệm đa năng ]]]]]]]]------
http://vmind.co.cc/vmind
-------[[[[ Diễn đàn trí tuệ Việt Nam ! ]]]]]]]]-----
http://vmind.co.cc

User avatar
VBNewbie
Thành viên tích cực
Thành viên tích cực
Posts: 113
Joined: Sat 29/03/2008 7:13 pm
Location: Computer
Been thanked: 3 times
Contact:

Re: Đọc được Unicode từ file text

Postby VBNewbie » Sat 17/05/2008 8:38 pm

Xin lỗi bác nha ! Con hok bik pác lớn tuổi !
Pác bik cái đọc bằng Binary thi chỉ con với, còn đọc bằng 2 cách trên chỉ đọc được Unicode mà hok đọc dc UTF-8. Thank you !
-------[[[[[[[ VMind - PM trắc nghiệm đa năng ]]]]]]]]------
http://vmind.co.cc/vmind
-------[[[[ Diễn đàn trí tuệ Việt Nam ! ]]]]]]]]-----
http://vmind.co.cc

User avatar
truongphu
VIP
VIP
Posts: 4778
Joined: Sun 04/11/2007 10:57 am
Location: Cam Đức, Khánh hòa
Has thanked: 14 times
Been thanked: 522 times

Re: Đọc được Unicode từ file text

Postby truongphu » Fri 30/05/2008 3:49 pm

Đã lâu không coi lại bài nầy, xin lỗi VBNewbie
Cách

Code: Select all

  1. Open fp For Binary Access Read As #fNum
  2.         ReDim B(LOF(fNum))
  3.     Get #fNum, , B
  4.     Close #fNum
không hổ trợ file text UTF-8. (Muốn thể hiện tiếng Việt còn phải qua một lần chuyển mã nữa!)

Bạn dùng thêm một Richtextbox để thể hiện nội dung file với cách đọc từng dòng

Code: Select all

  1. Private Sub Form_Load()
  2. Dim B$, fp$, TextLine$
  3.     fp = "C:\Mùa Thu Lá Bay1.txt"
  4.     Open fp For Input As #1
  5.     Do While Not EOF(1)
  6.             Line Input #1, TextLine
  7.         B = B & TextLine & vbCr
  8.    Loop
  9. RichTextBox1 = B
  10. End Sub
o0o--truongphu--o0o

.........
Ghé thăm:
Chuyện Linh Tinh

User avatar
VBNewbie
Thành viên tích cực
Thành viên tích cực
Posts: 113
Joined: Sat 29/03/2008 7:13 pm
Location: Computer
Been thanked: 3 times
Contact:

Re: Đọc được Unicode từ file text

Postby VBNewbie » Sat 14/06/2008 7:51 pm

Thank bác truongphu ! Nhưng con thử sài hàm chuyển từ UTF8 - Unicode nhưng bị lỗi !
-------[[[[[[[ VMind - PM trắc nghiệm đa năng ]]]]]]]]------
http://vmind.co.cc/vmind
-------[[[[ Diễn đàn trí tuệ Việt Nam ! ]]]]]]]]-----
http://vmind.co.cc

User avatar
VBNewbie
Thành viên tích cực
Thành viên tích cực
Posts: 113
Joined: Sat 29/03/2008 7:13 pm
Location: Computer
Been thanked: 3 times
Contact:

Re: Đọc được Unicode từ file text

Postby VBNewbie » Thu 01/01/2009 10:01 am

Hik ai chỉ cách tạo file text UTF-8 zới ! Em đang bí !
-------[[[[[[[ VMind - PM trắc nghiệm đa năng ]]]]]]]]------
http://vmind.co.cc/vmind
-------[[[[ Diễn đàn trí tuệ Việt Nam ! ]]]]]]]]-----
http://vmind.co.cc

User avatar
truongphu
VIP
VIP
Posts: 4778
Joined: Sun 04/11/2007 10:57 am
Location: Cam Đức, Khánh hòa
Has thanked: 14 times
Been thanked: 522 times

File TXT là UTF-8

Postby truongphu » Fri 02/01/2009 3:02 pm

C1- Đọc file:
Dùng lệnh Open... For Input As... như bình thường, tuy nhiên ta phải chuyển mã từ UTF-8 sang Unicode với hàm tương ứng
* Form1 cần Command1 và TextBox1 (MS Form 2.0, Font Arial, Multiline=true). File txt utf8 là C:\3.txt

Code: Select all

  1. Private Declare Function MultiByteToWideChar Lib "kernel32" (ByVal CodePage As Long, ByVal dwFlags As Long, ByRef lpMultiByteStr As Any, ByVal cchMultiByte As Long, ByVal lpWideCharStr As Long, ByVal cchWideChar As Long) As Long
  2. Private Const CP_UTF8 = 65001
  3.  
  4. Private Sub Command1_Click()
  5. Dim zz$
  6. Open "C:\3.txt" For Input As #1
  7.     Do While Not EOF(1)
  8.             Line Input #1, aa
  9.             zz = zz & aa & vbCrLf
  10.     Loop
  11.     Close #1
  12.     TextBox1 = UTF82Unicode(zz)
  13. End Sub
  14.  
  15. Private Function UTF82Unicode(ByVal sUTF8 As String) As String
  16. Dim UTF8Size&, BufferSize&, BufferUNI$, LenUNI&, bUTF8() As Byte
  17. If LenB(sUTF8) = 0 Then Exit Function
  18. bUTF8 = StrConv(sUTF8, vbFromUnicode)
  19. UTF8Size = UBound(bUTF8) + 1
  20. BufferSize = UTF8Size * 2
  21. BufferUNI = String$(BufferSize, vbNullChar)
  22. LenUNI = MultiByteToWideChar(CP_UTF8, 0, bUTF8(0), UTF8Size, StrPtr(BufferUNI), BufferSize)
  23. If LenUNI Then UTF82Unicode = Left$(BufferUNI, LenUNI)
  24. End Function


C2- Ghi file:
Có thể gõ UTF8 từ bàn phím (chọn mã) hoặc phải chuyển đổi từ Unicode sang UTF8. Quá trình ghi file bình thường với Open... For Output As...
* Form1 cần Command1 và TextBox1 (MS Form 2.0, Font Arial, Multiline=true). File txt utf8 là C:\3.txt

Code: Select all

  1. Dim a() As String, b() As String
  2.  
  3. Private Sub Command1_Click()
  4. Dim zz$, qq As Boolean
  5. If TextBox1 = "" Then Exit Sub
  6. For i = 1 To Len(TextBox1)
  7.     For u = 0 To 133
  8.         If Mid(TextBox1, i, 1) = ChrW(b(u)) Then
  9.             zz = zz & a(u)
  10.             qq = True
  11.             Exit For
  12.         End If
  13.     Next
  14.     If qq = False Then zz = zz & Mid(TextBox1, i, 1)
  15.     qq = False
  16. Next
  17.  
  18. Open "C:\3.txt" For Output As #1
  19. Print #1, zz
  20. Close #1
  21. End Sub
  22.  
  23. Private Sub Form_Load()
  24. Dim C As String, d As String
  25. a = Split("Á@á@À@à @Ả@ả@Ã@ã@Ạ@ạ@Ă@ă@Ắ@ắ@Ằ@ằ@Ẳ@ẳ@Ẵ@ẵ@Ặ@ặ@Â@â@Ấ@ấ@Ầ@ầ@Ẩ@ẩ@Ẫ@ẫ@Ậ@ậ@
  26. Đ@Ä‘@É@é@È@è@Ẻ@ẻ@Ẽ@ẽ@Ẹ@ẹ@Ê@ê@Ế@ế@Ề@ề@Ể@ể@Ễ@á»…@Ệ@ệ@Í@í@ÃŒ@ì@Ỉ@ỉ@Ĩ@Ä©@Ị@ị@Ó@ó@Ã’@ò@Ỏ@ỏ@Õ@õ@Ọ@ọ@Ô@ô@Ố@ố@á»’@ồ@á»”@ổ@á»–@á»—@Ộ@á»™@Æ @Æ¡@Ớ@á»›@Ờ@ờ@Ở@ở@á»@ỡ@Ợ@ợ@Ú@ú@Ù@ù@Ủ@ủ@Ũ@Å©@Ụ@ụ@Ư@Æ°@Ứ@ứ@Ừ@ừ@Ử@á»­@á»®@ữ@á»°@á»±@Ý@ý@Ỳ@ỳ@Ỷ@á»·@Ỹ@ỹ@á»´@ỵ", "@")
  27. C =
  28. "193@225@192@224@7842@7843@195@227@7840@7841@258@259@7854@7855@7856@7857@7858@7859@7860@7861@7862@7863@194@226@7844@7845@7846@7847@7848@7849@7850@7851@7852@7853@272@273@201@233@200@232@7866@7867@7868@7869@7864@7865@202@234@7870@7871@7872@7873@7874@7875@7876@7877@7878@7879@205@237@204@236@7880@7881@296@297@7882@7883@211@243@210@242@7886@7887@213@245@7884@7885@212@244@7888@7889@7890@7891@7892@7893@7894@7895@7896@7897@416@417@7898@7899@7900@7901@7902@7903"
  29. d =
  30. "@7904@7905@7906@7907@218@250@217@249@7910@7911@360@361@7908@7909@431@432@7912@7913@7914@7915@7916@7917@7918@7919@7920@7921@221@253@7922@7923@7926@7927@7928@7929@7924@7925"
  31. b = Split(C & d, "@")
  32. End Sub

Nếu trong phần ghi file UTF8 có trắc trở vì code dài, xin load project
http://www.caulacbovb.com/forum/download/file.php?id=4015
o0o--truongphu--o0o

.........
Ghé thăm:
Chuyện Linh Tinh

User avatar
truongphu
VIP
VIP
Posts: 4778
Joined: Sun 04/11/2007 10:57 am
Location: Cam Đức, Khánh hòa
Has thanked: 14 times
Been thanked: 522 times

Re: Đọc được Unicode từ file text

Postby truongphu » Sat 03/01/2009 12:36 pm

Bổ sung:
Đọc từng dòng với file TXT unicode
Cần TextBox1 (MS Form 2.0 font: arial Multiline=true)

Code: Select all

  1.  Dim MyFile
  2.   Dim fso As New FileSystemObject
  3.   Set MyFile = fso.OpenTextFile("c:\unicode.txt", 1, , -2)
  4.   Do While Not MyFile.AtEndOfStream
  5.     TextBox1 = TextBox1 & MyFile.ReadLine & vbCrLf
  6.   Loop

Viết từng dòng với file TXT unicode

Code: Select all

  1.  Dim MyFile
  2.   Dim fso As New FileSystemObject
  3.   Set MyFile = fso.OpenTextFile("c:\unicode.txt", ForAppending, , -2)
  4.   MyFile.WriteLine "Mùa Thu Lá Bay"
  5.   MyFile.WriteBlankLines(1)
  6.   MyFile.WriteLine "Mùa Thu Lá Bay Anh Ðã Ði rôi"
o0o--truongphu--o0o

.........
Ghé thăm:
Chuyện Linh Tinh

coelsman
Posts: 3
Joined: Fri 13/04/2012 4:36 pm
Has thanked: 4 times

Re: Đọc/Ghi file text có mã Unicode

Postby coelsman » Fri 27/04/2012 3:44 pm

Bác Phú ơi, sao cháu làm cái code hệt của bác sao nó lỗi vậy nè:
  1. Option Explicit
  2.  
  3. Private Function ReadFileUni(FileName As String) As String
  4.     Dim FSO
  5.     Set FSO = CreateObject("Scripting.FileSystemObject").OpenTextFile(FileName, 1, , -2)
  6.     ReadFileUni = FSO.Readall
  7.     Set FSO = Nothing
  8. End Function
  9.  
  10. Private Function WriteFileUni(FileName As String, Unistr As String)
  11.     Dim FSO As Object
  12.     Set FSO = CreateObject("Scripting.FileSystemObject").CreateTextFile(FileName, True)
  13.     Set FSO = Nothing
  14.     Set FSO = CreateObject("Scripting.FileSystemObject").OpenTextFile(FileName, 2, , -1)
  15.     FSO.Write Unistr
  16.     Set FSO = Nothing
  17. End Function
  18.  
  19. Private Sub Form_Load()
  20.     Dim aa
  21.     Text1 = ReadFileUni(App.Path & "aaa.txt")
  22.     aa = WriteFileUni(App.Path & "bbb.txt", Text1)
  23. End Sub


Nó báo lỗi "File not found" ở trong hàm ReadFileUni, dòng
[vb]Set FSO = CreateObject("Scripting.FileSystemObject").OpenTextFile(FileName, 1, , -2)[/vb]

Dạ file aaa.txt cháu tạo ra từ trước rồi bác ạ, font Arial, Unicode. Cháu nhìn code ở Sub FormLoad cháu nghĩ là file bbb.txt sẽ copy nội dung từ file aaa.txt thông qua Text1 đúng ko ợ?
Cháu giờ còn gà lắm ợ, đang loay hoay mãi mà ko hiển thị nổi nội dung file txt ra text bác ợ.

User avatar
truongphu
VIP
VIP
Posts: 4778
Joined: Sun 04/11/2007 10:57 am
Location: Cam Đức, Khánh hòa
Has thanked: 14 times
Been thanked: 522 times

Re: Đọc/Ghi file text có mã Unicode

Postby truongphu » Sat 28/04/2012 9:49 am

coelsman wrote:Nó báo lỗi "File not found" ở trong hàm ReadFileUni, dòng
Set FSO = CreateObject("Scripting.FileSystemObject").OpenTextFile(FileName, 1, , -2)


Dòng trên là nguyên mẫu của hàm, không thể sai được, vậy lỗi xẩy ra khi ta gọi đối số của nó.
Đối số của hàm ReadFileUni là: (FileName)
vậy sai ở cách gọi đối số FileName
cách suy luận lỗi là như thế.

Xem lại bạn gọi đối số ở Form_Load
coelsman wrote:Text1 = ReadFileUni(App.Path & "aaa.txt")


Thấy lỗi chưa? App.Path & "aaa.txt"
chưa thấy thì ngẫm một lát :D
o0o--truongphu--o0o

.........
Ghé thăm:
Chuyện Linh Tinh

Thao Nguyen
Posts: 1
Joined: Thu 11/07/2013 9:41 am

Re: Đọc/Ghi file text có mã Unicode

Postby Thao Nguyen » Mon 29/07/2013 10:42 am

cho mình hỏi cái này, mình đang làm 1 form đăng nhập vào hệ thống gồm 4 textbox, txtTenServer, txtTenCSDL, txtTenDangNhap, txtMatKhau, khi mình đăng nhập lần đầu thì phải điền dữ liệu vào các text, khi đăng nhập lại lần 2 thì dữ liệu được lưu vào file txt, khi đó nó tự load dữ liệu lên, mình chỉ điền mật khẩu thôi, mấy bạn chỉ mình code ghi và đọc file txt trong vb nha. cám ơn mọi người nhiều lắm viết bằng vb net


Return to “[VB] Chuỗi và Thời gian”

Who is online

Users browsing this forum: No registered users and 1 guest