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

Код: 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
DOS Кодировка
    #37719645
Петров Андрей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А сорри это я возвращаю хотябы текст вместо пустышки которая возвращается из 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
DOS Кодировка
    #37719656
qwerty112
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Петров АндрейВот что делаю:

Код: 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
DOS Кодировка
    #37719704
WideCharToMultiByte() универсальнее.
...
Рейтинг: 0 / 0
DOS Кодировка
    #37719823
Код: 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
12 сообщений из 12, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / DOS Кодировка
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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