15 мая 2023 года "Исходники.РУ" отмечают своё 23-летие!
Поздравляем всех причастных и неравнодушных с этим событием!
И огромное спасибо всем, кто был и остаётся с нами все эти годы!

Главная Форум Журнал Wiki DRKB Discuz!ML Помощь проекту


Как конвертировать текст из DOS-кодировки в Windows

 

Declare Function CharToOemBuff Lib "user32" Alias "CharToOemBuffA" (ByVal lpszSrc As String, ByVal lpszDst As String, ByVal cchDstLength As Long) As Long
Declare Function OemToCharBuff Lib "user32" Alias "OemToCharBuffA" (ByVal lpszSrc As String, ByVal lpszDst As String, ByVal cchDstLength As Long) As Long

Public Function ToAnsi(s As String) As String
  Dim Buffer As String
  Buffer = Space(Len(s) + 1)
  OemToCharBuff s, Buffer, Len(s)
  ToAnsi = Left(Buffer, Len(s))
End Function

Public Function ToOEM(s As String) As String
  Dim Buffer As String
  Buffer = Space(Len(s) + 1)
  CharToOemBuff s, Buffer, Len(s)
  ToOEM = Left(Buffer, Len(s))
End Function

Использование:

sAnsi = ToAnsi("Дарт Вейдер")   ' Из DOS в Windows
sDos = ToOEM("Дарт Вейдер")    ' Из Windows в Dos

Примечание: Данные функции работают корректно только на русской Windows или на корректно русифицированной паневропейской.