Страница: 1 |
Как программно можно преобразовать документ, выполенный в кодировке MS-DOS к стандартной кириллице WINDOWS. (вот для примера кусок программного текста, читающий текстовой файл и последовательно выводящий все записи в list-контрол. Как их теперь расшифровать??? Dim TmpStr As String )
Страница: 1 |
Вопрос: Как преобразовать DOS-текст к WINDOWS
Добавлено: 15.06.04 18:29
Автор вопроса: Ганчиков
Dim StrDim() As String
Dim i As Double
Dim j As Integer
Dim n As Integer
ReDim StrDim(1)
Open "C:\1" For Binary As #1
ReDim bytbuf(1 To LOF(1)) As Byte
Get #1, , bytbuf
TmpStr = ""
For i = LBound(bytbuf) To UBound(bytbuf)
If bytbuf(i) = 179 Then
StrDim(UBound(StrDim)) = Trim(TmpStr)
ReDim Preserve StrDim(UBound(StrDim) + 1)
TmpStr = ""
Else
TmpStr = TmpStr + Chr(bytbuf(i))
End If
Next i
Close #1
For i = LBound(StrDim) To UBound(StrDim)
Me.List1.AddItem StrDim(i)
Next i
Ответы
Всего ответов: 5
Номер ответа: 1
Автор ответа:
@CyRax PTR
ICQ: 204447456
Вопросов: 28
Ответов: 664
Web-сайт:
Профиль | | #1
Добавлено: 15.06.04 19:27
А если OEMtoChar (WIN API)?
Номер ответа: 2
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #2
Добавлено: 15.06.04 21:11
Можно еще обойтись двумя таблицами DOS и WIN... правда скорость преобразования храмать будет...
Номер ответа: 3
Автор ответа:
@CyRax PTR
ICQ: 204447456
Вопросов: 28
Ответов: 664
Web-сайт:
Профиль | | #3
Добавлено: 15.06.04 22:30
sne,
Разве что на АСМ Конечно как только я его сделаю (может быть).
Номер ответа: 4
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #4
Добавлено: 16.06.04 00:16
Private Declare Function CharToOem Lib "user32" Alias "CharToOemA" (ByVal lpszSrc As String, ByVal lpszDst As String) As Long
Private Declare Function OemToChar Lib "user32" Alias "OemToCharA" (ByVal lpszSrc As String, ByVal lpszDst As String) As Long 'конвертируем строку в win-кодировку.
Private Sub mnuDOSWIN_click()
 im sourcestring As String ' нужная строка
 im deststring As String ' получаемая строка
 im code As Long
deststring = Space$(Len(Clipboard.GetText)) 'получаем перекодированную строку
code = OemToChar(Clipboard.GetText, deststring)
Clipboard.SetText (deststring)
End Sub
Private Sub mnuWINDOS_click()
' конвертируем строку в dos-кодировку.
 im sourcestring As String ' нужная строка
 im deststring As String ' получаемая строка Dim code As Long
deststring = Space$(Len(Clipboard.GetText)) 'получаем перекодированную строку
code = CharToOem(Clipboard.GetText, deststring)
Clipboard.SetText (deststring)
End Sub
Номер ответа: 5
Автор ответа:
Barsik
Разработчик Offline Client
ICQ: 343368641
Вопросов: 17
Ответов: 686
Web-сайт:
Профиль | | #5
Добавлено: 16.06.04 13:36
Можно и так...
Private Declare Function CharToOem Lib "user32" Alias "CharToOemA" _
(ByVal lpszSrc As String, ByVal lpszDst As String) As Long
Private Declare Function OemToChar Lib "user32" Alias "OemToCharA" _
(ByVal lpszSrc As String, ByVal lpszDst As String) As Long
' Перевод текста в кодировку DOS
Private Function ToDOS(Text As String) As String
Dim Text1 As String
Text1 = Space(Len(Text) + 1)
OemToChar Text, Text1
ToDOS = Left$(Text1, Len(Text))
End Function
' Перевод текста в кодировку Windows
Private Function ToWindows(Text As String) As String
Dim Text1 As String
Text1 = Space(Len(Text) + 1)
CharToOem Text, Text1
ToWindows = Left$(Text1, Len(Text))
End Function