آیا میشه برنامه ای نوشت که با دادن یک آدرس پوشه به اون تمام اسم فایل های داخل پوشه رو در list1 نمایش بده
من وقتی از دستور dir استفاده می کنم فقط اسم فایل اول (از نظر حروف الفبا) رو ذخیره می کنه
تابع Dir یک تابع خاص است، بایستی بار اول آنرا با پارامتر های ورودی فراخوانی کنید تا جستجو را آغاز کند و در دفعات بعدی
بدون پارامتر ورودی فراخوانی اش کنید تا جستجوی قبلی را ادامه دهد وگرنه مجددا از ابتدا جستجو خواهد کرد.
جستجو زمانی پایان یافته که رشته تهی ("") توسط این تابع برگردانده شود.
روتین زیر (DirPath) یک مسیر جستجو مانند (*.*\:C) و یک ListBox مانند List1 را به عنوان پارامتر ورودی دریافت کرده و
لیست فایلهای درون آن مسیر (اعم از فایل های مخفی (Hidden)، فایل های سیستمی (System) و
فقط خواندنی (Read Only) را در ListBox مور نظر قرار می دهد :
کد:
Private Sub [B]DirPath[/B](ByVal Path As String, ByRef List As ListBox)
Dim FileName As String
With List
.Clear
FileName = Dir(Path, vbArchive Or vbHidden Or vbReadOnly Or vbSystem)
Do While Len(FileName) > 0
.AddItem FileName
FileName = Dir
DoEvents
Loop
End With
End Sub
دقت کنید که شرط ادامه یافتن حلقه Do While بیشتر بودن طول رشته FileName از 0 است، یعنی تا زمانی که رشته تهی نباشد.
همچنین در داخل حلقه از تابع Dir به شکل FileName = Dir استفاده شده، یعنی بدون پارامتر ورودی.
از DoEvents استفاده گردید تا اگر تعداد فایل ها زیاد باشد و یا سیستم فایل ها کند عمل نماید، تاخیر در نمایش لیست موجب
قفل کردن برنامه نشود. هر زمانی که از فرمان DoEvents استفاده می کنید، عملیات به تاخیر افتاده مانند بررسی کلیک ماوس یا
نمایش محتویات ListBox به طور کامل انجام می شوند.
و یک مثال از نحوه بکارگیری این روتین :