Unit Unicode - Ultibo.org

Return to Unit Reference

Description


Ultibo Widestring Manager Interface unit

This unit implements the WideString and UnicodeString support for Ultibo including the WideStringManager/UnicodeStringManager interface for the RTL.

This unit provides compatible implementations of the following functions:

  • CharLower
  • CharPrev
  • CharUpper
  • FoldString
  • GetStringTypeEx
  • IsCharAlphaNumeric
  • IsDBCSLeadByte
  • LoadString
  • lstrcmpi
  • lstrlen
  • OemToCharBuff
  • wvsprintf
  • OemToAnsi
  • CharLowerBuff
  • CharToOem
  • CharUpperBuff
  • FormatMessage
  • GetStringTypeW
  • IsCharLower
  • IsTextUnicode
  • lstrcat
  • lstrcpy
  • MultiByteToWideChar
  • WideCharToMultiByte
  • CompareStringW
  • CharNext
  • CharToOemBuff
  • CompareStringA
  • GetStringTypeA
  • IsCharAlpha
  • IsCharUpper
  • LCMapString
  • lstrcmp
  • lstrcpyn
  • OemToChar
  • wsprintf
  • AnsiToOem

The following functions are implemented by the FileSystem unit:

  • AreFileApisANSI (AreFileApisANSI is exposed in the Ultibo unit)
  • SetFileApisToANSI (SetFileApisToANSI is exposed in the Ultibo unit)
  • SetFileApisToOEM (SetFileApisToOEM is exposed in the Ultibo unit)

Most of the above are currently not implemented.


See also: https://msdn.microsoft.com/en-us/library/windows/desktop/dd319081%28v=vs.85%29.aspx

Constants


None defined

Type definitions



String types

LPSTR = PAnsiChar;
LPCSTR = PAnsiChar;

Wide string types

LPWSTR = PWideChar;
LPCWSTR = PWideChar;

Public variables


None defined

Function declarations



Initialization functions

procedure UnicodeInit;

Description: To be documented

Unicode functions

function MultiByteToWideChar(CodePage:UINT; dwFlags:DWORD; lpMultiByteStr:LPCSTR; cbMultiByte:Integer; lpWideCharStr:LPWSTR; cchWideChar:Integer):Integer;

Description: SBCS/DBCS OEM or ANSI string to Unicode string

Note cchWideChar is the size of lpWideCharStr in WideChars (not Bytes).

Currently ignores the Flags parameter. Currently only supports SBCS.

function WideCharToMultiByte(CodePage:UINT; dwFlags:DWORD; lpWideCharStr:LPCWSTR; cchWideChar:Integer; lpMultiByteStr:LPSTR; cbMultiByte:Integer; lpDefaultChar:LPCSTR; lpUsedDefaultChar:LPBOOL):Integer;

Description: Unicode string to SBCS/DBCS OEM or ANSI string

Note cchWideChar is the size of lpWideCharStr in WideChars (not Bytes).

Currently ignores the Flags and DefaultChar parameters. Currently only supports SBCS.

function CompareString(Locale:LCID; dwCmpFlags:DWORD; lpString1:LPCSTR; cchCount1:Integer; lpString2:LPCSTR; cchCount2:Integer):Integer; inline;

Description: To be documented

function CompareStringA(Locale:LCID; dwCmpFlags:DWORD; lpString1:LPCSTR; cchCount1:Integer; lpString2:LPCSTR; cchCount2:Integer):Integer;

Description: ANSI compare of two strings for equivalence. If both strings are equal returns CSTR_EQUAL, if string 1 is less than string 2 returns CSTR_LESS_THAN and if string 1 is greater than string 2 returns CSTR_GREATER_THAN, on error returns 0

Note Currently the Locale value is ignored and the ANSI code page is used for comparison.

Currently only supports SBCS.

function CompareStringW(Locale:LCID; dwCmpFlags:DWORD; lpString1:LPCWSTR; cchCount1:Integer; lpString2:LPCWSTR; cchCount2:Integer):Integer;

Description: Unicode compare of two strings for equivalence. If both strings are equal returns CSTR_EQUAL, if string 1 is less than string 2 returns CSTR_LESS_THAN and if string 1 is greater than string 2 returns CSTR_GREATER_THAN, on error returns 0

Note Currently the Locale value is ignored
function CharUpper(lpsz:LPSTR):LPSTR; inline;

Description: To be documented

function CharUpperA(lpsz:LPSTR):LPSTR;

Description: Lower to Upper case conversion in ANSI code page (Char)

Note Unlike Windows this function does not differentiate a single character by the high order word of the passed pointer. To convert a single character call CharUpperBuffA instead with the length as 1.

Currently only supports SBCS.

function CharUpperW(lpsz:LPWSTR):LPWSTR;

Description: Lower to Upper case conversion in Unicode (WideChar)

Note Unlike Windows this function does not differentiate a single character by the high order word of the passed pointer. To convert a single character call CharUpperBuffW instead with the length as 1.
function CharUpperBuff(lpsz:LPSTR; cchLength:DWORD):DWORD; inline;

Description: To be documented

function CharUpperBuffA(lpsz:LPSTR; cchLength:DWORD):DWORD;

Description: Lower to Upper case conversion in ANSI code page (Char)

Note Currently only supports SBCS
function CharUpperBuffW(lpsz:LPWSTR; cchLength:DWORD):DWORD;

Description: Lower to Upper case conversion in Unicode (WideChar)

function CharLower(lpsz:LPSTR):LPSTR; inline;

Description: To be documented

function CharLowerA(lpsz:LPSTR):LPSTR;

Description: Upper to Lower case conversion in ANSI code page (Char)

Note Unlike Windows this function does not differentiate a single character by the high order word of the passed pointer. To convert a single character call CharLowerBuffA instead with the length as 1.

Currently only supports SBCS.

function CharLowerW(lpsz:LPWSTR):LPWSTR;

Description: Upper to Lower case conversion in Unicode (WideChar)

Note Unlike Windows this function does not differentiate a single character by the high order word of the passed pointer. To convert a single character call CharLowerBuffW instead with the length as 1.
function CharLowerBuff(lpsz:LPSTR; cchLength:DWORD):DWORD; inline;

Description: To be documented

function CharLowerBuffA(lpsz:LPSTR; cchLength:DWORD):DWORD;

Description: Upper to Lower case conversion in ANSI code page (Char)

Note Currently only supports SBCS
function CharLowerBuffW(lpsz:LPWSTR; cchLength:DWORD):DWORD;

Description: Upper to Lower case conversion in Unicode (WideChar)

function AnsiToOem(lpszSrc:LPCSTR; lpszDst:LPSTR):BOOL; inline;

Description: To be documented

function AnsiToOemBuff(lpszSrc:LPCSTR;lpszDst:LPSTR; cchDstLength:DWORD):BOOL; inline;

Description: To be documented

function OemToAnsi(lpszSrc:LPCSTR; lpszDst:LPSTR):BOOL; inline;

Description: To be documented

function OemToAnsiBuff(lpszSrc:LPCSTR; lpszDst:LPSTR; cchDstLength:DWORD):BOOL; inline;

Description: To be documented

function CharToOem(lpszSrc:LPCSTR; lpszDst:LPSTR):BOOL; inline;

Description: To be documented

function CharToOemA(lpszSrc:LPCSTR; lpszDst:LPSTR):BOOL;

Description: ANSI to OEM conversion (Char to Char)

Note Currently only supports SBCS
function CharToOemW(lpszSrc:LPCWSTR; lpszDst:LPSTR):BOOL;

Description: Unicode to OEM conversion (WideChar to Char)

Note Currently only supports SBCS
function OemToChar(lpszSrc:LPCSTR; lpszDst:LPSTR):BOOL; inline;

Description: To be documented

function OemToCharA(lpszSrc:LPCSTR; lpszDst:LPSTR):BOOL;

Description: OEM to ANSI conversion (Char to Char)

Note Currently only supports SBCS
function OemToCharW(lpszSrc:LPCSTR; lpszDst:LPWSTR):BOOL;

Description: OEM to Unicode conversion (Char to WideChar)

Note Currently only supports SBCS
function CharToOemBuff(lpszSrc:LPCSTR; lpszDst:LPSTR; cchDstLength:DWORD):BOOL; inline;

Description: To be documented

function CharToOemBuffA(lpszSrc:LPCSTR; lpszDst:LPSTR; cchDstLength:DWORD):BOOL;

Description: ANSI to OEM conversion (Char to Char)

Note Currently only supports SBCS
function CharToOemBuffW(lpszSrc:LPCWSTR; lpszDst:LPSTR; cchDstLength:DWORD):BOOL;

Description: Unicode to OEM conversion (WideChar to Char)

Note Currently only supports SBCS
function OemToCharBuff(lpszSrc:LPCSTR; lpszDst:LPSTR; cchDstLength:DWORD):BOOL; inline;

Description: To be documented

function OemToCharBuffA(lpszSrc:LPCSTR; lpszDst:LPSTR; cchDstLength:DWORD):BOOL;

Description: OEM to ANSI conversion (Char to Char)

Note Currently only supports SBCS
function OemToCharBuffW(lpszSrc:LPCSTR; lpszDst:LPWSTR; cchDstLength:DWORD):BOOL;

Description: OEM to Unicode conversion (Char to WideChar)

Note Currently only supports SBCS

RTL unicode functions

function SysCodePageToWideChar(Ch:Char):WideChar;

Description: ANSI to Unicode conversion (Char to WideChar)

Note Currently only supports SBCS
function SysWideCharToCodePage(Ch:WideChar):Char;

Description: Unicode to ANSI conversion (WideChar to Char)

Note Currently only supports SBCS

RTL unicode string manager functions

procedure SysWide2AnsiMove(Source:PWideChar; var Dest:RawByteString; cp:TSystemCodePage; Len:SizeInt);

Description: To be documented

procedure SysAnsi2WideMove(Source:PChar; cp:TSystemCodePage; var Dest:WideString; Len:SizeInt);

Description: To be documented

function SysUpperWideString(const S:WideString):WideString;

Description: To be documented

function SysLowerWideString(const S:WideString):WideString;

Description: To be documented

function SysCompareWideString(const s1,s2:WideString; Options:TCompareOptions):PtrInt;

Description: To be documented

function SysCompareTextWideString(const s1,s2:WideString):PtrInt;

Description: To be documented

procedure SysUnicode2AnsiMove(Source:PUnicodeChar; var Dest:RawByteString; cp:TSystemCodePage; Len:SizeInt);

Description: To be documented

procedure SysAnsi2UnicodeMove(Source:PChar; cp:TSystemCodePage; var Dest:UnicodeString; Len:SizeInt);

Description: To be documented

function SysUpperUnicodeString(const S:UnicodeString):UnicodeString;

Description: To be documented

function SysLowerUnicodeString(const S:UnicodeString):UnicodeString;

Description: To be documented

function SysCompareUnicodeString(const s1,s2:UnicodeString; Options:TCompareOptions):PtrInt;

Description: To be documented

function SysCompareTextUnicodeString(const s1,s2:UnicodeString):PtrInt;

Description: To be documented

function SysUpperAnsiString(const S:String):String;

Description: To be documented

function SysLowerAnsiString(const S:String):String;

Description: To be documented

function SysCompareStrAnsiString(const S1,S2:String):PtrInt;

Description: To be documented

function SysCompareTextAnsiString(const S1,S2:String):PtrInt;

Description: To be documented

function SysStrCompAnsiString(S1,S2:PChar):PtrInt;

Description: To be documented

function SysStrICompAnsiString(S1,S2:PChar):PtrInt;

Description: To be documented

function SysStrLCompAnsiString(S1,S2:PChar; MaxLen:PtrUInt):PtrInt;

Description: To be documented

function SysStrLICompAnsiString(S1,S2:PChar; MaxLen:PtrUInt):PtrInt;

Description: To be documented

function SysStrLowerAnsiString(Str:PChar):PChar;

Description: To be documented

function SysStrUpperAnsiString(Str:PChar):PChar;

Description: To be documented

Return to Unit Reference