我原来一直用dir来获得一个目录下的一级目录列表,后来发现有数量限制(32768),超过就溢出了:<求一算法获得某目录下一级目录的列表,只要一级目录的列表。
解决方案 »
- 如何使两个text都符合要求后再执行各自语句
- 请教:有时候部件 MS Internet Controls 是ieframe.dll,有时候是shdocvw.dll,why?
- 本人查了很多关于如何删除临时表的文章都不能解决的问题,请高手帮忙解决!
- 为什么我的存储过程返回的纪录集没有东西
- 请问各位高手,在VB中怎样使用ODBC API的例子!在线等待!
- 用那个函数可以读取树组个数?
- 简单问题,关于listview删除 十分钟揭贴
- vb访问foxpro备注字段
- VB.NET问题!
- 请投票保护长城
- 使用 ISNull 函数 在运行时出错, 错误号是91
- vb有办法得到一个String有多少Byte么?多谢指教!!
'引用Microsoft Scriptint Runtime
Private Sub Command1_Click()
Dim f As New FileSystemObject
Dim fd As Folder
Dim childfolder As Folder
Set fd = f.GetFolder("c:\winnt")
For Each childfolder In fd.SubFolders
List1.AddItem childfolder.Name
Next
End Sub
.net里面变量的范围都比vb扩了一倍,是不是dir也可以装更多?有环境的可以帮着试试,我可没有几万个文件夹的目录
dir1.count 也只能到32765 这个速度快
怎么是负的.好像目录又加载完了的.
//我试过可以到40000
DIDiskQuotaUser Microsoft.DiskQuota.1
DiskQuotaControl Cannot late bind
Folder Shell.Application.NameSpace("...")
Folder2 Shell.Application.NameSpace("...")
FolderItem Shell.Application.NameSpace("...").Self or
Folder.Items.Item or Folder.ParseName
FolderItems Folder.Items
FolderItems2 Folder.Items
FolderItemVerb Shell.NameSpace("...").Self.Verbs.Item(i)
FolderItemVerbs FolderItem.Verbs or
Shell.NameSpace("...").Self.Verbs
IShellDispatch2 Shell.Application
IShellLinkDual2 Shell.NameSpace("...").Self.GetLink or
Shell.NameSpace("...").Items(i).GetLink
Shell Shell.Application
ShellFolderItem Shell.NameSpace("...").Self or
Shell.NameSpace("...").Items(i)
ShellFolderView Cannot late bind
ShellFolderViewOC Cannot late bind
ShellLinkObject Shell.NameSpace("...").Self.GetLink or
Shell.NameSpace("...").Items(i).GetLink
ShellUIHelper Cannot late bind
ShellWindows Shell.Windows or
ShellWindows._NewEnum
WebViewFolderContents Cannot late bind
Dim sPath As String, sName As String sPath = "C:\"
sName = Dir$(sPath, vbDirectory + vbNormal + vbHidden + vbArchive + vbReadOnly + vbSystem)
Do While sName <> ""
If sName <> "." And sName <> ".." Then
List1.AddItem sName
End If
sName = Dir$()
Loop
End Sub
Dim objShell, objFolder, subFolder
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.namespace("c:\winnt")
For Each subFolder In objFolder.Items
List1.AddItem subFolder.Name
Next
Set objFolder = Nothing
Set objShell = Nothing
Set subFolder = Nothing
End Sub
vb中的integer是有符号数,超过了32768就要溢出啦,你用一个long 来存储就可以了。
vb连无符号数都不提供,挺烦的
这个问题是listbox的问题.它只可以存最多32768条记录.你可以换个控件来显示,不是DIR的问题.
这个问题是listbox的问题.它只可以存最多32768条记录.你可以换个控件来显示,不是DIR的问题.可能我说的不清楚,我用的是dirlistbox,他和listbox 一样,都不能返回32767以后的目录名字....
vb中的integer是有符号数,超过了32768就要溢出啦,你用一个long 来存储就可以了。
vb连无符号数都不提供,挺烦的是dirlistbox的问题,你可以试一试,一个目录(C:\test)下有40000个目录,然后
dim i,k as long
dim j as string
dir1.path="c:\test"
k=dir1.listcount
for i=0 to 40000
j=dir1.list(i)
next i
超过32767就溢出了,呵呵,而且dir1.listcount是负数...
Dim sPath As String, sName As String sPath = "C:\"
sName = Dir$(sPath, vbDirectory)
Do While sName <> ""
If sName <> "." And sName <> ".." Then
If GetAttr(sPath & sName) And Not vbArchive Then
List1.AddItem sName
End If
End If
sName = Dir$()
Loop
End Sub