Functions.SetCollation 方法 |
命名空间: XSharp.Core
参数 | 描述 |
---|---|
Windows (默认) |
这使用正常的 Windows Ansi 比较机制,Visual Objects 也使用这个。
这意味着来自 .Net 的 Unicode 字符首先被转换为 Ansi,然后按照 Ansi 比较规则进行比较。 在大多数情况下,不在 Ansi 代码页中的字符会被翻译为问号 '?',因此都被视为相等。 如果你想进行真正的 Unicode 比较,你需要 Unicode 值来设置 SetCollation。 |
Clipper |
这使用的是与 Visual Objects 国家模块中的字符比较表相同的字符串比较表。 Unicode 字符串中的每个字符首先使用运行时状态的 DosCodePage 转换为 OEM 代码页中的字符。 然后,结果的 OEM 字符在运行时 dll 的 256 字符权重表中查找。 你可以通过使用 SetNatDLL() 切换到不同的表。 |
Unicode | 这使用的是普通的 Unicode String.Compare 例程进行字符串比较。 |
Ordinal | 这使用的是普通的 Ordinal String.Compare 例程。这是最快的。 |
1METHOD Start() CLASS App 2 LOCAL oWindow AS Window 3 LOCAL nLen, nBufSize := 10 AS SHORTINT 4 LOCAL pszLang := Psz(Space(nBufSize)) AS PSZ 5 // 初始化 StandardShellWindow 6 Enable3DControls() 7 oWindow := StandardShellWindow{SELF} 8 oWindow:Show() 9 // 从 WIN.INI 检索语言排序设置 10 nLen := GetProfileString("intl", "sLanguage", ; 11 "", pszLang, nBufSize)
1// 仅在系统配置为使用 2// 法语 Windows 排序时运行应用程序 3IF (Left(String(_CAST, pszLang), nLen) != "fra") 4 // 语言不正确,给出错误并退出。 5 TextBox{oWindow, "系统配置", ; 6 "要运行此应用程序,您必须在控制面板的国际部分将语言设置为 " + ; 7 "'法语'。"}:Show() 8ELSE 9 // 运行应用程序 10 SELF:Exec() 11ENDIF