View Full Version : ايجاد برنامه جستجو و ويرايش فايل
m_zargarnia
چهارشنبه 25 آبان 1390, 14:03 عصر
سلام
يه نمونه برنامه ميخوام كه بتونه اسم يك فايل رو از كاربر بگيره و توي كل درايو ها بگرده اگه پيداش كرد اونو باز كنه و اطلاعاتي رو به ته اون اضافه كنه.Plz Help Me
Mr'Jamshidy
چهارشنبه 25 آبان 1390, 15:45 عصر
برای جستجو میتونی از API استفاده کنی
این هم یک نمونه
Private Declare Function SearchTreeForFile Lib "imagehlp" (ByVal RootPath As String, ByVal InputPathName As String, ByVal OutputPathBuffer As String) As Long
Private Const MAX_PATH = 260
Private Sub Form_Load()
Dim tempStr As String, Ret As Long
'create a buffer string
tempStr = String(MAX_PATH, 0)
'returns 1 when successfull, 0 when failed
Ret = SearchTreeForFile("c:\", "myfile.ext", tempStr)
If Ret <> 0 Then
MsgBox "Located file at " + Left$(tempStr, InStr(1, tempStr, Chr$(0)) - 1)
Else
MsgBox "File not found!"
End If
End Sub
برای اضافه کردن چند خط اطلاعات به ته یک فایل هم:
Open "File Name" For Append As #1
Print #1, "Your Text Here"
Close
mr-adler
جمعه 27 آبان 1390, 01:35 صبح
سلام
چندین بار مسایل مرتبط با این دستور رو خوندم اما چیزی متوجه نشدم.
'create a buffer string tempStr = String(MAX_PATH, 0)
درست کردن بافر string یعنی چی؟:متفکر:
محسن واژدی
جمعه 27 آبان 1390, 11:09 صبح
سلام
بافر فضایی اختصاص داده شده است برای نگهداری نتیجه برگشتی در رم، (مهم نیست که کاراکترهای موجود در بافر چه نوع کاراکتری باشند، از هر نوعی میتوانیم برای ایجاد بافر استفاده کنیم مهم این است که یک فضا را برای جایگذاری نتیجه ایجاد کرده باشیم، البته بهتر است از کاراکترهایی استفاده شود که کمتر از آنها در رشته ها استفاده میشود تا در زمان جداسازی رشته نتیجه با مشکلی مواجه نشویم)،
همچنین همیشه فضای اختصاص داده شده بایستی بیشتر یا مساوی با طول رشته برگشتی باشد در غیراینصورت بدلیل کم بودن فضای بافری، رشته برگشتی کامل نخواهد بود
به عنوان مثال در اعلان "Dim sPath As String * 10" فضای بافری اختصاص داده شده 10 کاراکتر است، به عبارت دیگر این اعلان نمیتواند بیشتر از 10 کاراکتر از ابتدای یک رشته را نگهداری کند
موفق باشید
m_zargarnia
دوشنبه 30 آبان 1390, 14:03 عصر
ممنونم از راهنمائيتون . به چه صورت ميتونم كل درايو ها رو جستجو كنم . كد بالا فقط درايو C رو جستجو ميكنه.ميخوام كل درايو هاي هارد رو چك كنه.
يه سوال ديگه .من ميخوام يه برنامه بنويسم كه يكي يكي فايلهاي موجود در كامپيوتر رو باز كنه و مقداري رو توي اين فايل جستجو كنه اگه پيدا كرد اي مقدار رو ار توي فايل حذف كنه و فايل دوبار ذخيره بشه و بره سراغ فايل بعدي تا به آخر .
Mr'Jamshidy
دوشنبه 30 آبان 1390, 14:10 عصر
Ret = SearchTreeForFile("c:\", "myfile.ext", tempStr)
قسمت قرمز رنگ رو به آدرسی که میخوای جستجو کنی تغییر بده
----------
این چیزی که شما میخوای شدنیه اما این کار تقریبا زمان خیلی زیادی میبره
m_zargarnia
چهارشنبه 02 آذر 1390, 14:11 عصر
Ret = SearchTreeForFile("c:\", "myfile.ext", tempStr)
قسمت قرمز رنگ رو به آدرسی که میخوای جستجو کنی تغییر بده
----------
این چیزی که شما میخوای شدنیه اما این کار تقریبا زمان خیلی زیادی میبره
متوجه هستم وليكن من ميخوام درصورتي كه فايل رو تو درايو C پيدا نكرد خودش بره سراغ درايو بعدي و بهمين ترتيب تا به آخر .يعني ليست درايو هاي سيستم رو داشته ياشه هردفعه يكيشو انتخاب كنه اگه پيدا نكرد بره سراغ درايو بعدي و ...
براي درخواست دومم :
"يه سوال ديگه .من ميخوام يه برنامه بنويسم كه يكي يكي فايلهاي موجود در كامپيوتر رو باز كنه و مقداري رو توي اين فايل جستجو كنه اگه پيدا كرد اين مقدار رو ار توي فايل حذف كنه و فايل دوبار ذخيره بشه و بره سراغ فايل بعدي تا به آخر "
اگه يه راهنمائي ، كدي چيزي ... ، ممنون ميشم. خيلي مخلصتم
Mr'Jamshidy
پنج شنبه 03 آذر 1390, 00:06 صبح
متوجه هستم وليكن من ميخوام درصورتي كه فايل رو تو درايو C پيدا نكرد خودش بره سراغ درايو بعدي و بهمين ترتيب تا به آخر .يعني ليست درايو هاي سيستم رو داشته ياشه هردفعه يكيشو انتخاب كنه اگه پيدا نكرد بره سراغ درايو بعدي و ...
براي درخواست دومم :
"يه سوال ديگه .من ميخوام يه برنامه بنويسم كه يكي يكي فايلهاي موجود در كامپيوتر رو باز كنه و مقداري رو توي اين فايل جستجو كنه اگه پيدا كرد اين مقدار رو ار توي فايل حذف كنه و فايل دوبار ذخيره بشه و بره سراغ فايل بعدي تا به آخر "
اگه يه راهنمائي ، كدي چيزي ... ، ممنون ميشم. خيلي مخلصتم
در مورد سوال اولت باید بگم دوست عزیز شما اگر از یک حلقه و یک کنش شرطی استفاده کنی به چیزی که میخوای میرسی
در مورد سوال دومت
ابتدا به دستور Dir تمام دایرکتوری ها و فایل ها رو لیست میکنی
با دستور Open فایل رو باز میکنی (توضیح نمیدم چون در مورد این دستور توضیح زیاده)
کارایی که میخوای انجام میدی
فایل رو میبندی و میری فایل بعدی
تا آخر
فایل ها که تموم شد میری سروقت دایرکتوری اول و باز همین مراحل الی آخر
mr-adler
پنج شنبه 03 آذر 1390, 10:27 صبح
Ret = SearchTreeForFile("c:\", "myfile.ext", tempStr
این دستور فقط محتویات c:\ رو جستجو میکنه و مشکل اینجاست که اگه یه پوشه داخل درایو c باشه داخل پوشه رو به دنبال فایلمون نمیگرده و مشکل اینجاست....
اگه کل درایو c رو میگشت میشد با حلقه کل درایو ها رو گشت اما متاسفانه به این حالت نمیشه...
چیکار باید کرد؟
البته سورس هی زیادی برای سرچ هست اما دنبال چیزی میگردم که مثل سورس شما مختصر و مفید باشه و متوجه بشم... ! :لبخند:
kitcat_m18
پنج شنبه 03 آذر 1390, 10:48 صبح
تو VB6 نمي توني به خوبي اينکارو کني.
"يه سوال ديگه .من ميخوام يه برنامه بنويسم كه يكي يكي فايلهاي موجود در كامپيوتر رو باز كنه و مقداري رو توي اين فايل جستجو كنه اگه پيدا كرد اين مقدار رو ار توي فايل حذف كنه و فايل دوبار ذخيره بشه و بره سراغ فايل بعدي تا به آخر "
تو فايل هايي که يونيکد متفاوت دارن به مشکل مي خوري مثل فايل هاي "UTF-8"
نمونه برنامه براي اينکار قبلا نوشته شده و سرعت بسيار بالايي هم داره اگه اشتباه نکنم اسمش Full Text Search هست.
موفق باشي. :لبخندساده:
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.