Гость
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / DOS Кодировка / 12 сообщений из 12, страница 1 из 1
21.03.2012, 13:48
    #37715701
Петров Андрей
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DOS Кодировка
Как мне конвертнуть текст в досовскую кодировку перед тем как записать в файл?
Или можно сразу создать на запись файл в досовской кодировке?
...
Рейтинг: 0 / 0
21.03.2012, 16:48
    #37716163
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DOS Кодировка
хелп StrConv Function
Returns a Variant (String) converted as specified.
...
Рейтинг: 0 / 0
22.03.2012, 18:28
    #37718612
Петров Андрей
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DOS Кодировка
А поточнее пожалуйста.
Что и как передавать?
VBA
...
Рейтинг: 0 / 0
22.03.2012, 19:15
    #37718682
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DOS Кодировка
На гугле забанили? бедненький... ну на тебе ссылочку, там и пример имеется....
http://office.microsoft.com/ru-ru/access-help/HA001228915.aspx
...
Рейтинг: 0 / 0
22.03.2012, 19:24
    #37718690
DOS Кодировка
Akina,
человек-то наверное про OEM-кодировку спрашивает, CP866, например. StrConv тут не в дугу.
...
Рейтинг: 0 / 0
22.03.2012, 19:28
    #37718691
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DOS Кодировка
...
Рейтинг: 0 / 0
23.03.2012, 11:19
    #37719611
Петров Андрей
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DOS Кодировка
Уже пробовал через API
Процедура возвращает пустоту. Винда похоже не тянет функцию...
...
Рейтинг: 0 / 0
23.03.2012, 11:30
    #37719639
Петров Андрей
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DOS Кодировка
Вот что делаю:

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
Declare Function CharToOem Lib "user32" Alias "CharToOemA" (ByVal lpszSrc As String, ByVal lpszDst As String) As Long
Function win2dos(aStr)
Dim R As Long
Dim fRes As String
R = CharToOem(aStr, fRes)
win2dos = aStr
End Function
...
Рейтинг: 0 / 0
23.03.2012, 11:32
    #37719645
Петров Андрей
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DOS Кодировка
А сорри это я возвращаю хотябы текст вместо пустышки которая возвращается из CharToOem
Т.е. функция всегда возвращает пустоту:

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
Declare Function CharToOem Lib "user32" Alias "CharToOemA" (ByVal lpszSrc As String, ByVal lpszDst As String) As Long
Function win2dos(aStr)
Dim R As Long
Dim fRes As String
R = CharToOem(aStr, fRes)
win2dos = fRes
End Function
...
Рейтинг: 0 / 0
23.03.2012, 11:36
    #37719656
qwerty112
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DOS Кодировка
Петров АндрейВот что делаю:

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
Declare Function CharToOem Lib "user32" Alias "CharToOemA" (ByVal lpszSrc As String, ByVal lpszDst As String) As Long
Function win2dos(aStr)
Dim R As Long
Dim fRes As String
R = CharToOem(aStr, fRes)
win2dos = aStr
End Function


fRes - должна быть "инициализированна" )) , вроде
7421464
...
Рейтинг: 0 / 0
23.03.2012, 11:53
    #37719704
DOS Кодировка
WideCharToMultiByte() универсальнее.
...
Рейтинг: 0 / 0
23.03.2012, 12:28
    #37719823
DOS Кодировка
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
Private Declare Function WideCharToMultiByte Lib "kernel32" ( _
   ByVal CodePage As Long, ByVal dwFlags As Long, _
   ByVal lpWideCharStr As Long, ByVal cchWideChar As Long, _
   lpMultiByteStr As Any, ByVal cchMultiByte As Long, _
   ByVal lpDefaultChar As Long, ByVal lpUsedDefaultChar As Long) As Long
'Cyrillic Alphabet (DOS)866
'Cyrillic Alphabet (Windows)1251
'Cyrillic Alphabet (ISO)28595
'Cyrillic Alphabet (KOI8-R)20866

Public Sub Test()
 Dim SrcStr As String
 Dim bDst() As Byte
 Dim ccLen As Long
 Dim nRet As Long
 
 SrcStr = "У попа была собака" & vbCrLf & "Он её любил" & vbCrLf & _
          "Она съела кусок мяса" & vbCrLf & "Он её убил" & vbCrLf
 ccLen = Len(SrcStr)
 'Вычисляем размер буфера
 nRet = WideCharToMultiByte(866, 0, StrPtr(SrcStr), ccLen, ByVal 0&, 0, 0, 0)
 If nRet > 0 Then
    ReDim bDst(0 To nRet - 1) As Byte 'Выделяем буфер
    'Конвертируем
    nRet = WideCharToMultiByte(866, 0, StrPtr(SrcStr), ccLen, bDst(0), nRet, _
                               0, 0)
 End If
 'Записываем буфер в файл
 Dim nFile As Integer
 nFile = FreeFile
 Open "C:\Temp\Story866.txt" For Output Access Write Lock Read Write As #nFile
 Close #nFile
 Open "C:\Temp\Story866.txt" For Binary Access Write Lock Write As #nFile
 Put #nFile, , bDst
 Close #nFile
End Sub
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / DOS Кодировка / 12 сообщений из 12, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]