Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Как преобразовать DOS-текст к WINDOWS Добавлено: 15.06.04 18:29  

Автор вопроса:  Ганчиков

Как программно можно преобразовать документ, выполенный в кодировке MS-DOS к стандартной кириллице WINDOWS. (вот для примера кусок программного текста, читающий текстовой файл и последовательно выводящий все записи в list-контрол. Как их теперь расшифровать???

Dim TmpStr As String
    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-сайт: basicproduction.nm.ru/
 Профиль | | #1
Добавлено: 15.06.04 19:27
А если OEMtoChar (WIN API)?

Ответить

Номер ответа: 2
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #2
Добавлено: 15.06.04 21:11
Можно еще обойтись двумя таблицами DOS и WIN... правда скорость преобразования храмать будет...

Ответить

Номер ответа: 3
Автор ответа:
 @CyRax PTR



ICQ: 204447456 

Вопросов: 28
Ответов: 664
 Web-сайт: basicproduction.nm.ru/
 Профиль | | #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()
    ;Dim sourcestring As String ' нужная строка
    ;Dim deststring As String ' получаемая строка
    ;Dim code As Long
    deststring = Space$(Len(Clipboard.GetText)) 'получаем перекодированную строку
    code = OemToChar(Clipboard.GetText, deststring)
    Clipboard.SetText (deststring)
End Sub

Private Sub mnuWINDOS_click()
    ' конвертируем строку в dos-кодировку.
    ;Dim sourcestring As String ' нужная строка
    ;Dim 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-сайт: barsik.newmail.ru
 Профиль | | #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

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам