- Код: Выделить всё
Модуль
Public Function RecodeString(strRecode As String, strFromCode As String, strIntoCode As String) As String
Dim lng_i As Long
Dim lng_j As Long
Dim strTemp As String
Dim strResult As String
If Len(strFromCode) <> Len(strIntoCode) Then
RecodeString = "Error"
Exit Function
End If
strResult = ""
strTemp = ""
For lng_i = 1 To Len(strRecode)
strTemp = Mid$(strRecode, lng_i, 1)
For lng_j = 1 To Len(strFromCode)
If strTemp = Mid$(strFromCode, lng_j, 1) Then
strTemp = Mid$(strIntoCode, lng_j, 1)
Exit For
End If
Next lng_j
strResult = strResult & strTemp
Next lng_i
RecodeString = strResult
End Function
Public Function GetFileFromRecode(strFileInput As String, strFileOutput As String)
Dim fso As New FileSystemObject
Dim ts_FileInput As TextStream
Dim ts_FileOutput As TextStream
Dim strKoi8 As String
Dim strWin1251 As String
strKoi8 = "бвчздецъйклмнопртуфхжигюыэящшьасБВЧЗДЕЦЪЙКЛМНОПРТУФХЖИГЮЫЭЯЩШЬАС"
strWin1251 = "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя"
Set ts_FileInput = fso.OpenTextFile(strFileInput, ForReading, False)
Set ts_FileOutput = fso.OpenTextFile(strFileOutput, ForWriting, True)
Do While Not ts_FileInput.AtEndOfStream
ts_FileOutput.WriteLine (RecodeString(ts_FileInput.ReadLine, strKoi8, strWin1251))
DoEvents
Loop
Set ts_FileOutput = Nothing
Set ts_FileInput = Nothing
End Function
Public Function GetFolderFromRecode(strFolderPath As String, txtTextBox As TextBox)
Dim fso As New FileSystemObject
Dim fls As Files
Dim fl As File
Dim fldr As Folder
Set fldr = fso.GetFolder(strFolderPath)
Set fls = fldr.Files
For Each fl In fls
Call GetFileFromRecode(fl.Path, strFolderPath & "\temp\" & fl.Name)
txtTextBox.Text = txtTextBox & fl.Path & "...ok" & vbNewLine
DoEvents
Next
End Function
Форма
Private Sub cmdMake_Click()
Call GetFolderFromRecode(txtPath.Text, txtList)
MsgBox "all"
End Sub
Private Sub Form_Load()
txtPath.Text = App.Path & "\HTML"
End Sub
Сделал програмку(точнее набросок) для переводировки из koi8 в win1251, но не устраивает скорость(100 фаилов 800 килобаит делал минут 5) так что пока решил не продолжать интерфеис наварачивать. Думаю можно ускорить паралельно обсчитывая несколько фаилов(потоки кажется) но лично с ними не работал. Может что еще посоветуете. Да и еще думаю пора наверное на vb.net переходить может поможите как там работать с фаилами и потоками(есть vb.net 2005 express edition на диске с журналом Хакер был).