@msdn=http://search.microsoft.com/search/results.aspx?qu=$$$ @pinvoke=http://pinvoke.net/$$$.htm Summary: 'Logical' sorting of Unicode strings, the way Windows Explorer sorts filenames on XP. !!!!C# Signature: [DllImport("shlwapi.dll", CharSet=CharSet.Unicode, ExactSpelling=true)] static extern int StrCmpLogicalW(string x, string y); !!!!VB Signature: Declare Unicode Function StrCmpLogicalW Lib "shlwapi.dll" (ByVal s1 As String, ByVal s2 As String) As Int32 !!!!User-Defined Types: None. !!!!Alternative Managed API: Do you know one? Please contribute it! !!!!Notes: Comparison is case insensitive, numbers are treated by numerical value instead of ASCII code, for example: File1 fIle2 fiLe10 instead of File1 fiLe10 fIle2 Note: for some reason, Vista Explorer appears to use a different sorting algoritm. The result is similar, but non-alphanumeric characters such as parentheses are ordered differently. !!!!Tips & Tricks: Please add some! !!!!C# Sample Code: public class LogicalComparer : IComparer<string> { [DllImport("shlwapi.dll", CharSet = CharSet.Unicode, ExactSpelling = true)] public static extern int StrCmpLogicalW(string x, string y); public int Compare(string x, string y) { return StrCmpLogicalW(x, y); } } !!!!VB Sample Code: Private Class StringLogicalComparer Implements IComparer(Of String) Private Declare Unicode Function StrCmpLogicalW Lib "shlwapi" _ (ByVal s1 As String, ByVal s2 As String) As Integer Public Function Compare(ByVal x As String, ByVal y As String) _ As Integer _ Implements System.Collections.Generic.IComparer(Of String).Compare Return StrCmpLogicalW(x, y) End Function End Class Private Sub Test() Dim cp As New StringLogicalComparer Debug.WriteLine(cp.Compare("a", "a")) ' 0 Debug.WriteLine(cp.Compare("1", "1")) ' 0 Debug.WriteLine(cp.Compare("a1", "a2")) ' -1 Debug.WriteLine(cp.Compare("a10", "a2")) ' +1 End Sub Documentation: StrCmpLogicalW@msdn on MSDN
Edit shlwapi.StrCmpLog...
You do not have permission to change this page. If you feel this is in error, please send feedback with the contact link on the main page.