【发布时间】:2018-11-04 21:04:58
【问题描述】:
我正在开发一个 VB6 应用程序,我的一些客户使用旧版本,而我的一些客户使用新版本。
在新版本中,有一个使用 FileSystemObject 和 For Each 循环填充目录子文件夹的列表框:
Dim objFileSys As New FileSystemObject
Dim myFolder as Folder
Set myFolder = objFileSys.GetFolder(Path)
For Each mysubfolder In myFolder.SubFolders
listbox1.AddItem mysubfolder.Name
Next
在旧版本中,使用了 Dir$ 函数:
Dim DirName As String
DirName = Dir$(Path, ATTR_DIRECTORY)
Do While DirName <> ""
If DirName <> "." And DirName <> ".." Then
If (GetAttr(Path & DirName) And ATTR_DIRECTORY) = ATTR_DIRECTORY Then
listbox1.AddItem DirName
End If
End If
DirName = Dir$
Loop
在旧版本中,listbox1.sort 属性为 true,而在新版本中,listbox1.sort 属性为 false。没有任何代码可以执行任何排序。
这就是奇怪的地方。当我在 Windows 10 中运行应用程序时,列表框在两个版本中都正确排序。当我在 Windows 7 中运行应用程序时,旧版本(listbox.sort=true 的那个)排序不正确,但新版本(listbox.sort=false 的那个)排序正确。
什么可能导致这种情况发生?
【问题讨论】:
-
排序不正确是什么意思?
-
它不是按字母数字排序的。排序似乎是完全随机的。
-
显示排序示例。
-
“随机排序”和“不排序”有区别吗?
-
我需要所有版本和所有操作系统的排序都是字母数字。我不在可以访问示例的位置。所有子文件夹均以 BCH 开头,后跟 5 位数字。