دستور اصلی که باید استفاده کنید تابع Dir است، اما این دستور دو تا عیب بزرگ داره،
اول اینکه فقط یک روتین می تونه در یکزمان ازش استفاده کنه، و اگه دو تا روتین بخواهند
هر دو از این تابع استفاده کنند، تداخل پیش میاد.
دومین عیب Dir اینه که فقط محتویات یک پوشه را می گرده و کاری به محتویات زیر پوشه های داخلش نداره.
مثلا وقتی شما مسیر درایو :C را بهش بدهید، داخل پوشه C:\Windows را جستجو نمی کنه.
من یک تابع ساختم به اسم SearchFiles که از شما چندین پارامتر را می خواهد :
Path مسیری که می خواهید در آن جستجو کنید مثلا :
کد:
C:\
C:\WINDOWS
E:\Games\GTA
FileName نام فایلی است که دنبالش می گردید، مثلا :
کد:
*.exe
جستجوی فایلهای اجرایی
Readme
جستجوی فایلهایی که در نام آنها عبارت مورد نظر باشد.
a
فایلهایی که در نام یا پسوند آنها حرف ای باشد.
*.*
همه فایلهایی که پسوند دارند.
*
همه فایلها، چه پسوند داشته باشند و چه نداشته باشند.
Files یک آرایه از نوع رشته ای که باید بصورت دینامیک طولش تغییر کنید مثلا :
فایلهای جستجو شده در این آرایه قرار می گیرند.
BaseIndex اندیس اولین فایلی که قرار است در آرایه قرار بگیرد، مقدار متعارف آن صفر است.
SubFolders یک مقدار Boolean است، اگر True باشد زیر پوشه ها را هم جستجو می کند.
این تابع از یک تابع API ویندوز استفاده می کند به نام PathIsDirectory.
PathIsDirectory یک مسیر را از شما می گیرد و مشخص می کند که آیا یک پوشه است یا نه.
می توانیم از تابع GetAttr موجود در خود VB هم برای این منظور استفاده کنیم ولی در بعضی از پوشه ها
خطای دسترسی به پوشه کار را مشکل می کند.
مقدار عددی که تابع برمی گرداند تعداد فایلهایی است که پیدا شده و در آرایه Files هستند.
من یک برنامه جستجو را همراه با فایل اجرایی exe بصورت zip شده ضمیمه این پست کردم :