Описание функции


OemToChar

Преобразует Oem (866) в двухбайтовую строку, на русской Windows.

OemToChar(*Src, *Dst)

Параметры

*Src Указатель на исходную строку, обязательно Ascii (однобайтовая), результат функции Ascii()
*Dst Указатель на буфер в памяти, куда будет помещён результат.

Примечания

Если *Dst будет читаться с помощью PeekS() с указанием длины -1, то *Dst должен быть на 2 байта больше. Если учесть, что однобайтовая строка преобразуется в двухбайтовую, то размер выделяемой памяти в 2 раза больше исходной строки.

Пример

EnableExplicit

Procedure.s WinAPI_CharToOem(Text.s)
    Protected Result.s, *d, length
    length = Len(Text)
    If length
        *d = AllocateMemory(length + 1)
        If *d
            CharToOem_(@Text, *d)
            Result = PeekS(*d, length, #PB_Ascii)
            FreeMemory(*d)
        EndIf
    EndIf
    ProcedureReturn Result
EndProcedure

Procedure.s WinAPI_OemToChar(Text.s)
    Protected Result.s, *d, length, *a
    length = Len(Text)
    If length
        *d = AllocateMemory(length * 2 + 2)
        If *d
            *a = Ascii(Text)
            OemToChar_(*a, *d)
            Result = PeekS(*d, -1, #PB_Unicode)
            FreeMemory(*d)
            FreeMemory(*a)
        EndIf
    EndIf
    ProcedureReturn Result
EndProcedure

Define s.s = "Привет"
Debug s
s = WinAPI_CharToOem(s)
Debug s
s = WinAPI_OemToChar(s)
Debug s