From c6c67dc18261088696b76ca97a966b88ae420607 Mon Sep 17 00:00:00 2001 From: svenbarth Date: Tue, 5 Feb 2013 16:33:42 +0000 Subject: [PATCH] Set the UnicodeCompare functions in the WideString manager also for WinCE and implement the Wide- and UnicodeCompare functions similar to Win32/64 by calling a common DoCompareString function. git-svn-id: trunk@23574 - --- rtl/wince/sysutils.pp | 31 +++++++++++++++++++++++-------- 1 file changed, 23 insertions(+), 8 deletions(-) diff --git a/rtl/wince/sysutils.pp b/rtl/wince/sysutils.pp index ca9af81492..f63177f59a 100644 --- a/rtl/wince/sysutils.pp +++ b/rtl/wince/sysutils.pp @@ -780,23 +780,36 @@ end; ****************************************************************************} -function WinCECompareWideString(const s1, s2 : WideString) : PtrInt; +function DoCompareString(P1, P2: PWideChar; L1, L2: PtrUInt; Flags: DWORD): PtrInt; begin SetLastError(0); - Result:=CompareString(LOCALE_USER_DEFAULT,0,pwidechar(s1), - length(s1),pwidechar(s2),length(s2))-2; + Result:=CompareString(LOCALE_USER_DEFAULT,Flags,P1,L1,P2,L2)-2; if GetLastError<>0 then RaiseLastOSError; end; +function WinCECompareWideString(const s1, s2 : WideString) : PtrInt; +begin + Result:=DoCompareString(PWideChar(s1), PWideChar(s2), Length(s1), Length(s2), 0); +end; + + function WinCECompareTextWideString(const s1, s2 : WideString) : PtrInt; begin - SetLastError(0); - Result:=CompareString(LOCALE_USER_DEFAULT,NORM_IGNORECASE,pwidechar(s1), - length(s1),pwidechar(s2),length(s2))-2; - if GetLastError<>0 then - RaiseLastOSError; + Result:=DoCompareString(PWideChar(s1), PWideChar(s2), Length(s1), Length(s2), NORM_IGNORECASE); +end; + + +function WinCECompareUnicodeString(const s1, s2 : UnicodeString) : PtrInt; +begin + Result:=DoCompareString(PWideChar(s1), PWideChar(s2), Length(s1), Length(s2), 0); +end; + + +function WinCECompareTextUnicodeString(const s1, s2 : UnicodeString) : PtrInt; +begin + Result:=DoCompareString(PWideChar(s1), PWideChar(s2), Length(s1), Length(s2), NORM_IGNORECASE); end; @@ -939,6 +952,8 @@ procedure InitWinCEWidestrings; begin widestringmanager.CompareWideStringProc:=@WinCECompareWideString; widestringmanager.CompareTextWideStringProc:=@WinCECompareTextWideString; + widestringmanager.CompareUnicodeStringProc:=@WinCECompareUnicodeString; + widestringmanager.CompareTextUnicodeStringProc:=@WinCECompareTextUnicodeString; widestringmanager.UpperAnsiStringProc:=@WinCEAnsiUpperCase; widestringmanager.LowerAnsiStringProc:=@WinCEAnsiLowerCase;