MACHINES WORLD
 Visual Basic - WinToDOS
 Карта сайта 


АнтиПосредник - квартиры без посредников

Однажды мне пришлось столкнуться с проблемой, когда мне нужно было в текстовом поле TextBox показать текст в DOS-кодировке. Самым простым способом было выставить в текстовом поле шрифт "Terminal". Я так и сделал, но... Текст-то я прочитать смог, а вот при выводе на печать или, например, при перенесении его через буфер обмена в текстовый редактор, получалась полная ерунда. Поэтому пришлось поискать другой способ. Из этой проблемы меня отлично выручили следующие функции: OemToChar, CharToOem и OemToCharBuff . Их названия, как видите, говорят сами за себя. Поставляются они в библиотеке "user32". А вот сам пример использования.

Создаем стандартный проект. Для обьявления нужных функций создаем стандартный модуль и вставляем в него следующий код:


Declare Function OemToChar Lib "user32" Alias "OemToCharA" (ByVal lpszSrc As String, ByVal lpszDst As String) As Long
Declare Function CharToOem Lib "user32" Alias "CharToOemA" (ByVal lpszSrc As String, ByVal lpszDst As String) As Long
Declare Function OemToCharBuff Lib "user32" Alias "OemToCharBuffA" (ByVal lpszSrc As String, ByVal lpszDst As String, ByVal cchDstLength As Long) As Long

Далее закрываем окно модуля. Оно нам больше не понадобится. Переходим к конструированию главной формы. Наносим на него текстовое поле. Лично мне необходим был элемент RichTextBox, поэтому я в примере буду использовать его. Итак вставляем в форму RichTextBox и присваиваем ему имя RichTextBox1 (чтобы не мудрствовать). Затем установим на форму элемент FileListBox и назовем его File1. Теперь можно ввести следующий код:

Public Function ToAnsi(S As String) As String
Dim Buffer As String
Buffer = String(Len(S), 32)
OemToCharBuff S, Buffer, Len(S)
ToAnsi = Trim(Buffer)
End Function

Private Sub File1_Click()
inq$ = Space(FileLen(File1.filename))
Open File1.filename For Binary As #1
Get #1, 1, inq$
Close #1
outq$ = Space(Len(inq$))
OemToChar inq$, outq$
RichTextBox1.Text = outq$
End Sub

Вот и весь секрет. Теперь при запуске программы в FileListBox отразится список файлов текущей директории. Выберите нужный Вам DOS-файл и кликните на нем. В RichTextBox появится уже перекодированный текст.

Помощь можно оказать, перечислив любую сумму на любой из кошельков WebMoney:
Z193190354379
U120840414982
R186326509716

или на Яндекс.Кошелек
41001169245110



Парашютный Портал Донбасса "eXtreme Way"

Рейтинг@Mail.ru

Яндекс.Метрика


Со мной можно связаться по адресу:  MachineWorld@ya.ru

WebDesign by Machine'2014
E-mail: MachineWorld@ya.ru