دوستان این پروژه ای که ضمیمه کردم توی text1.text باید خودم درایو براش تعریف کنم تا اون درایو سرچ کنه. من می خوام اتوماتیک تمام هارد را جستجو کنه و دونه دونه درایوهارو سرچ کنه و فایل های خواسته شده را لیست کنه.
ممنون میشم کسی بتونه ایدیتش کنه برام
دوستان این پروژه ای که ضمیمه کردم توی text1.text باید خودم درایو براش تعریف کنم تا اون درایو سرچ کنه. من می خوام اتوماتیک تمام هارد را جستجو کنه و دونه دونه درایوهارو سرچ کنه و فایل های خواسته شده را لیست کنه.
ممنون میشم کسی بتونه ایدیتش کنه برام
سلام
کاری نداره ، تنها کاری که باید بکنید این هست که یک کنترل درایو بزارید روی فرم ، بعد یکی یکی درایوها رو بخونید(درون یک تایمر) و وقتی جستجو در یک درایو تمام شد ، درایو بعدی که مثلا d هست رو در text1 کپی کنید و دکمه search رو فراخوانی کنید.اگه بخوام بهتر بگم ، درون یک کنترل تایمر باید بررسی کنید که آیا عمل سرچ به اتمام رسیده یا نه ، اگر تموم شد برنامه درایو بعدی رو از داخل کنترل درایو می خونه و در تکست کپی می کنه و دوباره دکمه سرچ رو فراخوانی می کنه.
این عمل انقدر تکرار میشه(به اندازه تعداد درایوهای کنترل درایو) تا تعداد کل درایوها سرچ شده باشه.
البته نکته ای که باید رعایت کنید اینست که حواستون باشه که برای درایوهایی مثل cd-rom و یا فلش و... برنامه دچار خطا نشه و اگر درایو آماده بود برنامه سرچ کنه و در غیر این صورت بره سراغ درایو بعدی.
میشه ایدیتش کنید
نیای به تایمر نیست.نوشتم ولی شاید خطا داشته باشه
این رو اضافه کن:
Private Sub Command1_Click()
a_1 = True
If n > Drive1.ListCount Then
MsgBox "search complet"
Exit Sub
Else
If a_1 = True Then
a_1 = False
n = n + 1
Text1.Text = Left(Drive1.List(n), 2)
Call Cmd_Search_Click
End If
End If
End Sub
و همچنین در پایان رویداد Cmd_Search_Click() این رو:
MsgBox "next drive ..."
Call Command1_Click
این متغیرها رو هم در قسمت بالای فرم تعریف کن:
Dim a_1 As Boolean
Dim n As Byte
آخرین ویرایش به وسیله volkswagen : دوشنبه 29 آبان 1391 در 20:16 عصر
کار نکرد.
می دونی می خوام چیکار کنم.
مثلاً من یک فایلی دارم بنام 1.txt که نمی دونم کجای هارد ذخیره شده. می خوام برنامه برام پیداش کنه. همین
می دونم ، ویرایشش کردم ، دوباره تست کن.کار نکرد.
می دونی می خوام چیکار کنم.
مثلاً من یک فایلی دارم بنام 1.txt که نمی دونم کجای هارد ذخیره شده. می خوام برنامه برام پیداش کنه. همین
بکارم نمیاد این. ضریب اشتباهش خیلی بالاست.
یکمی دقیقتر می خوام باشه
چرا ضریب اشتباهش بالاست؟! یکم دقیق تر توضیح بدید.
کجاش باید تعریف کنم که چی سرچ کنه ؟
مثلاً بهش بگم reza.txt را برام توی تمام درایوا بگرد ؟؟
بعد مشکلی که داره باز باید دستی خودم درایو براش انتخاب کنم. راه نداره خودش به ترتیب سرچ کنه بیاد پایین و تا آخر درایوارو که تموم کرد اعلام کنه که تمام هارد جستجو شد و تموم بشه کارش
start scan : *** معلومه
stop scan نداره
آخرین ویرایش به وسیله xrezax : سه شنبه 30 آبان 1391 در 11:31 صبح
نمیخواد دستی بدی تو برنامه رو باز کن بدون اینکه به هیچی دست بزنی سرچ رو بزن خودش کل هارد رو میگرده سی دی رم ... فاپی .... مموری .... همه چی هر چی تو مایکامپیورت هست همشو میگرده
تو لیست نشون میده .... والا اینجا شو دیگه ننوشتم فایل رو جستجو کنه فقط نوشتم فایلهای تکست رو باز کنه میتونی بعد از تموم شدن جستوی فایلهای تکست از لیست باکس پیدا کنی ..
میشه اضافه کرد ها بهش ولی کار داره یکم بازم اگه وقت کردم اونم درس میکنم سورس میزارم اینجا خدمتتتون ....
موفق و پیروز باشید در پناه خدا ..... یا علی
توی سرچ فقط اسم فایل نوشته میشه. مثلاً اگر توی درایو D یک تکست باشه بنام text.txt اینجوری می زنه
text.txt من می خوام اینجوری باشه
D:\test.txt
----------------------------------------
تست کردم درایوارو باید دستی بهش بدی. c رو که سرچ کرد ایست می کنه برنامه. (راهی داره درایو c رو بپره برنامه و سرچ کنه /؟؟)
با اجازه جناب program2vb ، خوب می بایست که این خط رو: (موجود در تابع FindFile)
List1.AddItem tFil.Name
به این تبدیل کنی:
List1.AddItem fso.BuildPath(fld.Path, tFil.Name)
کلا این خودش یه جور پروژه هست و شما می بایست مطابق میلتون اون رو ویرایش کنید.
تست کردم درایوارو باید دستی بهش بدی. میشه کاری کرد هر درایوی که تموم بشه بره سراغ بعدی
سلام
من پستهای قبلی رو نخوندم ولی میتونی توی یه حلقه از 65 تا 90 با تابع GetDriveType ببین اگه مقدارش برگشتیتش 1 نباشه یعنی اگه وجود داشته باشه کارت رو نجام بده. این مثال رو ببین:
Private Declare Function GetDriveType Lib "kernel32.dll" Alias "GetDriveTypeA" (ByVal nDrive As String) As Long
Dim Drive As String, DType As Byte
For i = 65 To 90
Drive = Chr(i) & ":"
DType = GetDriveType(Drive)
If DType <> 1 Then List1.AddItem Drive & " " & "Type: " & DType
Next
مرسی از کمکت امام میخوام با مثالهای قبلی سازگاری داشته باشه. نمیتونم از صفر شروع کنم
خب پس کد داخل دکمه Command1 رو بین این حلقه بنویس:
For i = 0 To List2.ListCount - 1
List1.AddItem "***" & List2.List(i) & "start scan : *** "
FindFile List2.List(i), txtExt
Next
البته خودم امتحانش نکردم. اگه جواب نداد بگو
سلام به همگی دوستان و خسته نباشید به همگی
اینم از برنامه کامل شده براتون میزارم هر کی خواست میتونه دان کنه
سوالی چیزی داشتین من در خدمتم
موفق و پیروز باشید در پناه خدا ...... یا علی
نمیشه سرعتشو برد بالا
بعد نمیشه یه کاری کرد براش تعریف کرد هر جا اسم فایل توش reza بکار رفته باشه رو پیدا کنه؟؟
مثلاً اینجوری
rezakjhkj
kljkljrezalkjlk
reza876
23238rezajkkl
سلام به شما دوست عزیز
چرا میشه اینکارو کرد
فقط یکم سرعت برنامه میاد پایین
موفق و پیروز باشید در پناه خدا
یا علی
میشه بگید کجاشو باید تغییر داد؟
سلام
باید فایل ها یکی یکی برای اینکار باز بشند(دستور open) که همونطوری که گفتند سرعت میاد پایین.
برنامه search خود ویندوز هم فکر کنم از یکسری الگوریتم های خاصی استفاده کرده چون سریع اینکارو می کنه والا در حالت عادی که شما می خوایند انجامش بدید خیلی طول می کشه.
فکر نکنم نیازی به باز کردن فایل باشه ؟؟
با همچین دستوری فکر کنم بشه ؟؟
البته من بلد نیستم ایدیتش کنم
For i = 0 To List1.ListCount - 1
If InStr(1, List1.List(i), "mohsen", vbTextCompare) <> 0 Then List2.AddItem List1.List(i)
Next
با سلام خدمت همگی دوستان عزیز :
نه نیاز به باز کردن فایل هست نه نیاز به حلقه دارین شما
داخل همون حلقه میتونین وسط دو قسمت سبز که داخل فانکشن هست اونجا کدتتون رو با شرط برسی کنید و استفاده کنید من وقت نداشتم زیاد در موردش فک کنم ولی این کد رو یه نگاه بکن
منظورم این قسمت برنامه
'************************************************* ****************
Label1.Caption = "Scan File : " & fso.BuildPath(fld.Path, tFil.Name)
List4.AddItem tFil.Name
List1.AddItem fso.BuildPath(fld.Path, tFil.Name)
ln = InStrRev(tFil.Name, Text1.Text, Len(tFil.Name) - 4)
If ln > 0 Then
If tFil.Name = Text1.Text + "." + txtExt Or Mid(Left(tFil.Name, Len(tFil.Name) - 4), ln, Len(Text1.Text)) = Text1.Text Then
List5.AddItem fso.BuildPath(fld.Path, tFil.Name)
End If
End If
'************************************************* ****************
البته در قسمت جنرال فرم یا میتونین در داخل فانکشن یه متغییر با اسم ln از نوع long تعریف کنید ......
برای برسی رشته از کد زیر استفاده میکنیم
ln = InStrRev(tFil.Name, Text1.Text, Len(tFil.Name) - 4)
این -4 که در بالا گذاشتم منظورم این بود که اون .txt یعنی پسوند فایل رو برداره و بغیر اون رو جستجو کنه .
و قسمت بعدی کد نشون دادن درست یا غلط هست که داخل شرط مینویسیم
Mid(tFil.Name, ln, Len(Text1.Text)) = Text1.Text
این برسی میکنه درستی یا نادرستی رو که مثلا رضا هست داخل اسم فایل یا نیست اگه باشه مقدار بازگشتی درست true و اگه نباشه مقدار بازگشتی نادرست false خواهد بود
البته فک کنم بنده چون یکم عجله داشتم شاید کدها یخورده اشکال داشته باشه حالا خودتون یکم زحمت بکشین من توضیحاتشو دادم
اینم یکم توضیح در مورد همین موضوع : >>>>>>>
************************************************** **************************
تابع Mid : اين تابعی يک رشته بر می گرداند که شامل تعداد مشخصی از کاراکترهای رشته ورودی آن است .
میتونین به شکل زیر از این دستور استفاده کنید :
Mid(string, start, length)
string : رشته ورودی .
start : محل شروع اولين کاراکتر رشته ای که می خواهيم از رشته ورودی استخراج کنيم .
Length : اين پارامتر اختياری است و طول رشته ای است که می خواهيم از رشته ورودی استخراج کنيم . اگر اين پارامتر وارد نشود کليه کاراکترها از start به بعد استخراج خواهند شد .
مثال :
Mid("Ghader",3,2)="ad"
تابع Instr : اين تابع محل اولين وقوع يک رشته را درون رشته ديگر نشان می دهد .
میتونین به شکل زیر از این دستور استفاده کنید :
InStr(start, string1, string2)
Start : اين پارامتر اختياری است و محل شروع جستجو را نشان می دهد . اگر اين پارامتر وارد نشود جستجو از ابتدای رشته آغاز می شود .
String1 : رشته ای که جستجو در آن انجام می شود .
String2 : رشته مورد جستجو
مثال :
ln = InStr(1, "ghader", "ad")
مقدار بازگشتی این اگه اون کلمه باشه براابر محل اولین حرف اون اگه وجود نداشته باشه برابر 0 هست
************************************************** **************************
میتونین کد بالا که نوشتم از اون استفاده کنین
موفق و پیروز باشید در پناه حق
یا علی