PDA

View Full Version : سوال: جستجو در کل هارد برای چند پسوند بطور همزمان



shahabbasic
پنج شنبه 20 مرداد 1390, 12:03 عصر
چطور میشه در کل هارد جستجو کنم نه در یک درایو در ثانی میخوام چند پسوند رو همزمان جستجو کنم مثلا پسوندها gif , jbg , dat

quiet_programmer
جمعه 21 مرداد 1390, 18:37 عصر
با سلام.

این رو دان کن مشکلت حل میشه. من قبلا اینو نوشته بودم برای کپی کردن تمامی عکسهای هارد به یک مسیر خاص. فقط من گفتم که فایلهای jpeg رو جستجو کنه که برای جستجوی فایلهای دیگه به صو رت همزمان این خط از کد در تابع Backup تو مازول هست رو تغییر بده:

If UCase(Right(Source, 3)) = "JPG" Then

مثلا بصورت زیر:

If UCase(Right(Source, 3)) = "JPG" Or UCase(Right(Source, 3)) = "TXT" Then

همچنین وقتی فایلی رو با اون پسوند پیدا میکنه آدرس اونرو در خاصیت caption فرم نشون میده که شما میتونین به جای این دستور چیز دیگه ای بنویسین مثلا بلا بیارین سرش.

73711

محسن واژدی
جمعه 21 مرداد 1390, 19:17 عصر
سلام علیکم
متاسفانه مشکلی که در شی Dir وجود دارد عدم توانایی در لیست کردن فولدر های سیستمی موجود در مسیر مورد نظر است
البته توابع APIی Search این مشکل را ندارد
موفق باشید

m2011kh
جمعه 21 مرداد 1390, 20:28 عصر
از چه تابعی استفاده کنیم.

butterfly8528
شنبه 22 مرداد 1390, 03:58 صبح
سلام دوست عزیز .
همین یکی دو روز پیش این نمونه (http://barnamenevis.org/showthread.php?298542-%D8%AC%D9%84%D9%88%DA%AF%DB%8C%D8%B1%DB%8C-%D8%A7%D8%B2-%D9%87%D9%86%DA%AF-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D8%AF%D8%B1-%D9%87%D9%86%DA%AF%D8%A7%D9%85-%D8%AC%D8%B3%D8%AA%D8%AC%D9%88%DB%8C-%D9%81%D8%A7%DB%8C%D9%84&p=1309433&viewfull=1#post1309433) رو برای دوستمون قرار دادم .
موفق باشید :لبخندساده: .

vbhamed
یک شنبه 23 مرداد 1390, 05:42 صبح
سلام علیکم
متاسفانه مشکلی که در شی Dir وجود دارد عدم توانایی در لیست کردن فولدر های سیستمی موجود در مسیر مورد نظر است
البته توابع APIی Search این مشکل را ندارد
موفق باشید

سلام
تابع Dir مشكلي با فايلها و پوشه هاي سيستمي نداره فقط بايد بهش بگيد چي رو بياره

Dim x$
x = Dir$("d:\", vbArchive Or vbDirectory Or vbHidden Or vbHidden Or vbNormal Or vbReadOnly Or vbSystem)

While x <> ""
List1.AddItem x
x = Dir$
Wend

محسن واژدی
یک شنبه 23 مرداد 1390, 10:12 صبح
سلام
تابع Dir مشكلي با فايلها و پوشه هاي سيستمي نداره فقط بايد بهش بگيد چي رو بياره

Dim x$
x = Dir$("d:\", vbArchive Or vbDirectory Or vbHidden Or vbHidden Or vbNormal Or vbReadOnly Or vbSystem)

While x <> ""
List1.AddItem x
x = Dir$
Wend


سلام علیکم
گویا متوجه منظور بنده نشدین:


.
.
.
متاسفانه مشکلی که در شی Dir وجود دارد ...
.
.
.

همانگونه که عرض شد، "شی Dir" یعنی شی DirList موجود در نوار ابزار وی بی، نه تابع Dir؛ بله در تابع dir سطح نمایش قابل تعریف است اما شی Dir امکان استفاده از فیلتر را ندارد البته اگر مسیر یک فولدر سیستمی را دریافت کند محتوی آنرا نشان میدهد اما قادر به نمایش فولدر های سیستمی موجود در یک مسیر نیست

شاید اگر نمونه جناب quiet_programmer موجود در پست شماره 2 (که در آن از این شی استفاده شده است) را بررسی کنین بیشتر گویای این موضوع باشد

موفق باشید

returnx
یک شنبه 23 مرداد 1390, 10:49 صبح
If UCase(Right(Source, 3)) = "JPG" Then

مثلا بصورت زیر:


If UCase(Right(Source, 3)) = "JPG" Or UCase(Right(Source, 3)) = "TXT" Thenبرای جستجو همزمان کافیه فقط به File Lis بگید چی رو بیاره که خیلی راحت با خاصیت Pattern شی FileList میتونستید این کار انجام بدید...

محسن واژدی
یک شنبه 23 مرداد 1390, 11:15 صبح
برای بررسی چندین پسوند در یک زمان، APIیی هم وجود داره، بنام PathMatchSpec که از این موضوع کاملا" پشتیبانی میکند، نمونه زیر را ببینین:

Private Declare Function PathMatchSpec Lib "shlwapi.dll" Alias "PathMatchSpecA" (ByVal pszFile As String, ByVal pszSpec As String) As Long

Private Sub Command1_Click()
MsgBox "Is this valid ext: " & CBool(PathMatchSpec("C:\my_fl.rar", "*.zip;*.rar;*.7z"))
End Sub

از ";" برای جداسازی چندین پسوند استفاده میشود

موفق باشید

shahabbasic
یک شنبه 23 مرداد 1390, 12:10 عصر
این سورس خطا میده

محسن واژدی
یک شنبه 23 مرداد 1390, 13:23 عصر
این سورس خطا میده

کدام یک از سورس ها؟ سورس پست2 یا5؟

shahabbasic
یک شنبه 23 مرداد 1390, 16:10 عصر
کدام یک از سورس ها؟ سورس پست2 یا5؟
پست 2
عین همون کد رو اگه بخوای توی یک پروژه جدید بریزی قسمت تعریف متغیر از نوع systemobject خطا میده

butterfly8528
یک شنبه 23 مرداد 1390, 16:40 عصر
سلام .
برای رفع این خطا باید رفرنس Microsoft Scripting RunTime رو به برنامه اضافه کنید .

محسن واژدی
یک شنبه 23 مرداد 1390, 16:46 عصر
این خطا در نبود یک کامپوننت رخ میدهد،
در این مثال کامپوننت Microsoft Scripting Runtime مورد نیاز است که بایستی آنرا به صورت زیر بارگذاری کنید:

1- F2 صفحه کلید را بزنید
2- داخل فرم Object Browser کلیک راست کنین و Reference را بازکنین سپس از system32 فایل scrrun.dll را انتخاب کنین و بعد ok کنین

موفق باشید

------------------------
میبخشید جواب جناب butterfly8528 (http://barnamenevis.org/member.php?75627-butterfly8528) را ندیده بودم