PDA

View Full Version : سوال: جستجوی بسیار سریع هارد و سایر حافظه های قابل حمل



roya.raha
چهارشنبه 09 اسفند 1391, 19:31 عصر
سلام
این برنامه های جستجو سریع را دیدید مثل : Find fast (http://www.yasdl.com/16399/%d8%af%d8%a7%d9%86%d9%84%d9%88%d8%af-%d9%86%d8%b1%d9%85-%d8%a7%d9%81%d8%b2%d8%a7%d8%b1-%d8%ac%d8%b3%d8%aa%d8%ac%d9%88-%d8%b3%d8%b1%db%8c%d8%b9.html) یا Quick Search (http://www.downloadha.com/1390/03/%d8%ac%d8%b3%d8%aa%d8%ac%d9%88%db%8c-%d8%b3%d8%b1%db%8c%d8%b9-%d8%aa%d8%b1-%d9%81%d8%a7%db%8c%d9%84-%d9%87%d8%a7-%d8%a8%d9%87-%d9%88%d8%b3%db%8c%d9%84%d9%87-quick-search-1-0-0-166/)
این برنامه ها بسیار سریعتر از جستجوی خود ویندوز و در لحظه تمام نتایج جستجوی شما را نشان می دهند.

میخواستم ببینم میشه با vb.net هم همچین برنامه هایی ساخت ؟
اگر بله راهنمایی ، سورسی یا ... بگذارید خیلی لطف کردید.

roya.raha
پنج شنبه 10 اسفند 1391, 11:52 صبح
سلام
یکی از رفقا گفت که این برنامه ها اول همه فایلها را ایندکس می کنند بعد دیگه در فایل خودشون می گردند ! اگر دوستان اطلاعی دارند ممنون میشم راهنمایی کنند . برای یک پروژه خیلی بهش احتیاج دارم

roya.raha
جمعه 11 اسفند 1391, 22:18 عصر
حتی یک نظر ؟!:متفکر:

mina-rahnama
یک شنبه 13 اسفند 1391, 12:53 عصر
من این تاپیک را در جستجو گوگل پیدا کردم
دنبال همچین سورسی می گردم حالا چه در vb.net چه در C# .

مرسی

roya.raha
یک شنبه 13 اسفند 1391, 15:59 عصر
کلی امیدوارم کردید ، فکر کردم بالاخره یک جوابی به این تاپیک رسید :افسرده:

از یک نظر بد نیست حالا دوتایی هم دردیم :بوس:

roya.raha
دوشنبه 21 اسفند 1391, 22:05 عصر
هفت Thread شهر برنامه نویسی را ... گشت -- ما هنوز اندر خم این کوچه ایم :متفکر:

Heidari66
سه شنبه 22 اسفند 1391, 20:04 عصر
دوست عزیز...
تو سایت دانلود برنامه روش کار برنامه رو گفته:


این برنامه پس از اولین اجرا کل هارد دیسک شما را اسکن میکند و لیست فایل ها را در دیتابیس خود ذخیره میکند و با جستجوی شما لیست فایلهای یافت شده را پیدا میکند.ضمنا دیتابیس هم بطور خودکار بروز میشود و نیازی به بروز رسانی دستی وجود ندارد .

roya.raha
چهارشنبه 23 اسفند 1391, 08:00 صبح
سلام و خیلی تشکر از اینکه بالاخره یک نفر به این تاپیک جواب داد :تشویق: :بوس:

فقط مشکل اینجاست که چطوری اینقدر سریع تمام فایلها را لیست میکنه . شما اگر یکی از برنامه ها را دانلود کنید می بینید ظرف چند ثانیه یک هارد یک ترا را ایندکس میکنه. میشه راهنمایی کنید خیلی خیلی ممنون:قلب:

Heidari66
پنج شنبه 24 اسفند 1391, 17:40 عصر
این نرم افزارها با C++ و دلفی نوشته شده
شاید تو تالار خودش بپرسید به جواب برسید.

یاعلی

roya.raha
جمعه 25 اسفند 1391, 15:46 عصر
من که بلد نیستم با اون نرم افزارها برنامه بنویسم .
یعنی هیچ راه حلی برای جستجوی سریعتر در وی بی دانت نمی شناسید ؟
اصلا یک سوال دیگه چطور میشه اسم تمام فایلهای یک درایو را در یک فایل تکس یا یک لیست باکس ریخت ؟

Heidari66
جمعه 25 اسفند 1391, 16:35 عصر
For Each foundFile As String In My.Computer.FileSystem.GetFiles(
"Your Path", FileIO.SearchOption.SearchAllSubDirectories)

ListBox1.Items.Add(foundFile)
Next

roya.raha
جمعه 25 اسفند 1391, 17:56 عصر
اگر بخواهیم همه فایلها را لیست کنه یعنی بگردد هر چی تو فلش و سی دی و هارد هست اضافه کند دستوری وجود دارد؟ یعنی میخوام به جای your path کد بالا خودش پیدا کند که چه درایورهایی دارم.

خیلی خیلی ممنون

Heidari66
جمعه 25 اسفند 1391, 22:58 عصر
دوست عزیز شما تو همین تالار جستجو کنید حتما قبلا دربارش بحث شده و به نتیجه میرسید.

اینم از لیست درایوها:

Dim drives As System.IO.DriveInfo() = System.IO.DriveInfo.GetDrives
ComboBox1.Items.AddRange(drives)


موفق باشید

davood_mortazavi
شنبه 26 اسفند 1391, 13:11 عصر
فکر می کنید فایده ای داشته باشه ؟ شما باید به محض اضافه شدن درایو جدید بتونید داخل آن را جستجو کنید با این چکار می کنید ؟ تازه حالا اینکار هم شد جستجو داخل لیست باکس سریعتر انجام می شود؟
ولی از کدها خیلی استفاده کردم متشکر.

roya.raha
شنبه 26 اسفند 1391, 19:53 عصر
وقتی همه اسم فایلها را داخل یک لیست باشند حتما سریعتر انجام میشود.
ولی درباره اتصال یک حافظه خارجی یا ورود سی دی یا حتی اضافه شدن یک مجموعه فایل .... نمیدونم ! از شانس بد من نمی دونم چرا این تاپیک مورد غضب اساتید این تالار قرار گرفته است و اصلا شرکت نمیکنند. باز هم خدا پدر این آقا/خانم حیدری را بیامرزه به داد ما جواب داد.

به هر حال از همه دوستان که شرکت کردند و شرکت می کنند تشکرمی کنم.

Saman_12
دوشنبه 28 اسفند 1391, 20:28 عصر
شما صرفا دنبال کد هستید و خوب کم هستند افرادی که حوصله نوشتن واسه یکی دیگه رو دارن!(دنیا اینجوریه دیگه...)
چون خودم تو این چند روزه دنبال یه همچین چیزی بودم قبلا اینا رو نوشتم استفاده , تصحیح (که حتما لازمه بهینه شه) و کار با خودتون :

Imports System.IO
Imports System.Threading

Public Class ClsFind

Public Event OperationDone(CThread As Thread, Fileslist As ArrayList)
Public Sub Getfiles(paths() As String, fileslist As ArrayList)

For Each Path As String In paths

Dim Tgetfiles As New Thread(AddressOf T_Getfiles)

Tgetfiles.Name = "Thread of: " & Path
Tgetfiles.Priority = ThreadPriority.AboveNormal
Tgetfiles.IsBackground = True

Tgetfiles.Start({Path, fileslist})
Next
End Sub

Private Sub T_Getfiles(args As Object)

Dim path As String = args(0)
Dim fileslist As ArrayList = args(1)

S_Getfiles({path, fileslist})

RaiseEvent OperationDone(Thread.CurrentThread, fileslist)
End Sub

Public Event AddFile(CThread As Thread, Fileslist As ArrayList, File As FileInfo)
Private Sub S_Getfiles(args As Object)
On Error Resume Next

Dim path As String = args(0)
Dim fileslist As ArrayList = args(1)

Dim Cdir As New DirectoryInfo(path)
Dim files() As FileInfo = Cdir.GetFiles()

For Each File As FileInfo In files

fileslist.Add(File)
RaiseEvent AddFile(Thread.CurrentThread, fileslist, File)
Next

For Each Dir As DirectoryInfo In Cdir.GetDirectories

S_Getfiles({Dir.FullName, fileslist})
Next
End Sub
End Class



Private ODrives() As DriveInfo
Private Sub GetDriveChanges()

If Not Thread.CurrentThread.Name = "TGetDriveChanges" Then

Dim TGetDriveChanges As New Thread(AddressOf GetDriveChanges)

TGetDriveChanges.Name = "TGetDriveChanges"
TGetDriveChanges.Priority = ThreadPriority.BelowNormal
TGetDriveChanges.IsBackground = True

TGetDriveChanges.Start()
Else

Dim NDrives() As DriveInfo = DriveInfo.GetDrives

ReDim ODrives(NDrives.Length - 1)
NDrives.CopyTo(ODrives, 0)


NDrives = DriveInfo.GetDrives

Do

Dim Changes() As DriveInfo = GetChange(ODrives, NDrives)

If Not Changes Is Nothing Then

For Each Drive As DriveInfo In Changes

Console.WriteLine(Drive.tos)
Next

ReDim ODrives(NDrives.Length - 1)

NDrives.CopyTo(ODrives, 0)
End If

ReDim NDrives(DriveInfo.GetDrives.Length - 1)

DriveInfo.GetDrives.CopyTo(NDrives, 0)

Thread.Sleep(100)
Loop
End If
End Sub

Private Function GetChange(ODrives() As DriveInfo, NDrives() As DriveInfo) As DriveInfo()

If ODrives.Length = NDrives.Length Then Return Nothing

Dim Drives As New ArrayList

If NDrives.Length > ODrives.Length Then

For Each N As DriveInfo In NDrives

Dim Issame As New Boolean

For Each O As DriveInfo In ODrives

If N.Name = O.Name Then Issame = True
Next

If Not Issame Then Drives.Add(N)
Next
ElseIf NDrives.Length < ODrives.Length Then

For Each O As DriveInfo In ODrives

Dim Issame As New Boolean

For Each N As DriveInfo In NDrives

If N.Name = O.Name Then Issame = True
Next

If Not Issame Then Drives.Add(O)
Next

End If

Dim _Drives(Drives.Count - 1) As DriveInfo

Drives.CopyTo(_Drives, 0)

Return _Drives
End Function

roya.raha
سه شنبه 29 اسفند 1391, 20:49 عصر
سلام
از لطفتون خیلی ممنون
ولی بگذارید یک توضیح من بدم ، اینجا ما چند نوع کاربر داریم . بعضیا خیلی حرفه ای هستند و در شرکتهای بزرگ برنامه نویسی کار می کنند و برنامه ها ی میلیونی می نویسند و خلاصه خود ماکروسافتی ها هم از برخی کارهایی که اینا با VS انجام میدهند خبر ندارند. بعضی ها معلوماتشون متوسطه و مثلا لیسانس نرم افزار دارند و چهارتا کتاب برنامه نویسی خوندند و بگی نگی کار با VS را بلدند. یک عده ای هم مثل من نه رشتمون نرم افزار نه درس اینکار را خوندیم ، مثلا حسابداری خوندیم یا مهندسی ساختمان یا ... حالا کارمون یک جایی گیر کرده به برنامه نویسی هم علاقه داشتیم دو تا سی دی آموزشی و یک کتاب خریدیم داریم آهسته آهسته یاد میگیریم . اتفاقی که میفته چیه ما که سوم ابتدایی هستیم یک دفعه به نظرمون میاد مساحت دایره را حساب کنیم دنبال یک فرمول می گردیم اینجا سوال می پرسیم بعد چی میشه یکدفعه یک دکترای ریاضی میاد میگیه خوب با انتگرال حل میشه دیگه جستجو بکن در فلان تاپیک نوشتم چطوری تابع دایره را پیدا کنی و در فلان تاپیک هم انتگرال گیریش هست .یک فوق لیسانس هم میاد میگه خب مساحت دایره را که میخواهیم بدست بیاریم به فلان و بهمان و ... احتیاجه اینم رفنس خارجیش بخون . تنبل! اینجا کسی بهت فرمول نمیده !
عزیزان حرفه ای ، چون که با کودک سر و کارت فتاد پس زبان کودکی باید گشاد. بگذارید ما از تغییر در سورسها و کمک گرفتن از شما برنامه های ساده خودمون را بسازیم و کلاسش را بگذاریم شما هم برنامه های میلیونی خودتون را بنویسید و پولش را در بیارید و سر هندسه اقلیدسی و نا اقلیدسی هم یک مواقعی کل بندازید تا حالش را ببرید .
ولی در کمک کردن به اون کودکه فقط لذت لطف و هبه کردن را در نظر بگیرید نه اینکه اگر بهش فرمول بدم دیگه انتگرال یاد نمیگیره ! چون اصلا قرار نیست یاد بگیره مگه یک نفر چند تا رشته را میتونه باهم یاد بگیره فقط کارش گیر افتاده میخواد یک کاری انجام بده یا بین رفقاش یک کلاسی بگذاره یا برای تفریح یک کیفی بکنه که این برنامه را خودم نوشتما مثل بچه ای که با خونه سازی یک خونه می سازه.
سرتون را درد آوردم ببخشید.

------
در مورد کدهایی که دادید من همشون را مستقیم کپی کردم در قسمت کدهای فرم یکسری خطا داد که با همون اطلاعات کم بالا پایینش کردم ولی در کد شما هیچ دکمه ای ، لیستی نیست که کدها را نشون بده اگر میشه راهنمایی کنید چطوری باید نتیجه را ببینم .

متشکر

Heidari66
پنج شنبه 01 فروردین 1392, 12:45 عصر
دوست عزیز گفتم که شما اگه یه سرچ کوچولو میکردید به نتایج خوبی میرسیدید
بخاطر این دوستان به بعضی از سوال ها جواب نمیدن چون از قبل زیاد دربارش بحث شده

این نمونه رو نوشتم ببینید بکارتون میاد: