تبلیغات :
ماهان سرور
آکوستیک ، فوم شانه تخم مرغی ، پنل صداگیر ، یونولیت
دستگاه جوجه کشی حرفه ای
فروش آنلاین لباس کودک
خرید فالوور ایرانی
خرید فالوور اینستاگرام
خرید ممبر تلگرام

[ + افزودن آگهی متنی جدید ]




صفحه 1 از 2 12 آخرآخر
نمايش نتايج 1 به 10 از 17

نام تاپيک: جستجوي تمام هارد ديسك در عرض يك يا چند ثانيه با وي بي 2005!!! (لطفآ كمكم كنيد)

  1. #1
    آخر فروم باز smahdis's Avatar
    تاريخ عضويت
    Aug 2006
    محل سكونت
    مشهد
    پست ها
    1,138

    پيش فرض جستجوي تمام هارد ديسك در عرض يك يا چند ثانيه با وي بي 2005!!! (لطفآ كمكم كنيد)

    با سلام آيا كسي اينجا ميدونه كه چطوري ميتونم چندين هزار آيتم را در عرض يك يا چند ثانيه در ListView قرار بدم.
    براي مثال من ميخوام يك برنامه بنويسم كه تمام هارد ديسك را در عرض چند ثانيه جستجو كنه مثل همين نرم افزار تربو سرچر Turbo Searcher. من تمام كارهاي ديگر را از قبيل ايندكس كردن يا همان جمع آوري تمامي نام فايلهاي هارد ديسك در يك فايل رو انجام دادم و فقط تنها مشكلي كه مانده اين هست كه چطور ميتونم چندين هزار نام فايل رو در عرض يك يا چند ثانيه در ListView قرار بدم. من در ابتدا گرفتم تمامي نام فايلها رو در يك فايل تكستي يا متني جمع آوري كردم كه حدودآ چندين هزار تا خط ميشن بعد با خودم فكر كردم كه بگيرم از يك عبارت For...Next استفاده كنم كه هر خطي رو دونه به دونه در ليست اضافه كنه ولي متوجه شدم كه اينطوري حدود 3 الي 5 دقيقه طول ميكشه كه نام تمام فايلها در ليست قرار داده بشوند. لطفآ و خواهشآ اگر ممكنه يكي كمكم كنه!!!

  2. #2
    داره خودمونی میشه mohseni12345's Avatar
    تاريخ عضويت
    Feb 2006
    پست ها
    196

    پيش فرض

    شما اول اون فایل متنی که داری رو در اول برنامت بخون و بزار توی یه متغیر بعد توی متغیر سرچ کن
    این که خط به خط از روی فایل می خونی خیلی سرعتو میاره پایین
    منم دارم یه برنامه درست می کنم که کار ویندوز اکسپلورر رو انجام بده
    مثلا مشاهده ی فایل ها پاک کردن یا کپی کردن
    منم از همین روش استفاده کردم

  3. #3
    آخر فروم باز smahdis's Avatar
    تاريخ عضويت
    Aug 2006
    محل سكونت
    مشهد
    پست ها
    1,138

    پيش فرض

    سلام آقاي mohseni12345
    خيلي ممنون كه جواب داديد. من هم در ابتدا ميخواستم كاري مثل كار شما يعني ساخت ويندوز ايكسپلورر را انجام بدم ولي ديدم از اين كار خوشم نمياد و مورد پسند من نبود.
    راستي اين كاري كه شما گفتي رو همون اول انجام دادم ولي بازهم همون چند دقيقه طول ميكشه تا در ليست اضافه بشوند. من اين كار رو كردم اگر منظور شما اين نبود خواهش ميكنم كه بيشتر توضيح بديد:
    من در ابتدا فايل رو در يك متغير از نوع رشته جا سازي كردم
    بعد يك متغير از نوع رشته خالي ساختم
    بعد از يك عمل For Each...Next استفاده كردم
    ولي باز هم همون 2 الي 3 دقيقه طول ميكشه!!
    لطفآ آقاي mohseni12345 و همچنين هر كس ديگه اي كه داره اين مطلب رو ميخونه و ميتونه كمكم كنه نظرش رو بنويسه.
    ممنون...خدايا به اميد تو.

  4. #4
    حـــــرفـه ای
    تاريخ عضويت
    Aug 2006
    پست ها
    793

    پيش فرض

    سلام.
    شما بايد همزمان كه فايلي رو پيدا ميكنيد در ListView قرار بديد.
    به اين نوع برنامه ها MultiTasking گفته ميشه.بايد از دو Thread در برنامتون استفاده كنيد.
    يكي براي Serach و ديگري براي قرار دادن اسامي در ListView .
    در ضمن چون منابع بين دو Thread مشترك هستند بايد از Mutex يا CriticalSection استفاده كنيد
    تا بتونيد از يك منبع استفاده كنيد.
    Last edited by someone; 02-10-2006 at 17:45.

  5. #5
    آخر فروم باز smahdis's Avatar
    تاريخ عضويت
    Aug 2006
    محل سكونت
    مشهد
    پست ها
    1,138

    پيش فرض خيلي ممنون آقاي Someone

    با تشكر از شما آقاي Someone
    اگر ميشه يكم بيشتر در مورد Thread ها توضيح بديد راستش رو بخواين من اين موضوع thread ها برام شده مشكل چون اصلا ازش سر در نمي آرم. ممنون ميشم اگر توضيح بيشتري بديد.

  6. #6
    حـــــرفـه ای
    تاريخ عضويت
    Aug 2006
    پست ها
    793

    پيش فرض

    دوباره سلام.
    حتما تا حالا برنامه هايي رو ديديد كه همزمان چند كار باهم انجام ميدن.
    مثل MSWord كه هنگامي كه شما در حال تايپ كردن هستيد همزمان غلط هاي املايي شما چك ميشه.
    و يا بزرگترين مثالش كه خود Windows هست .شما ميتونيد همزمان هم رايت كنيد و هم موسيقي گوش كنيد وغيره.به اين اجراي همزمان multi-treading گفته ميشه. اصطلاحا بهش ريسمان هم گفته ميشه.
    خيلي ساده تر در مورد برنامه ي شماست. شما دو حلقه( Loop ) داريد كه همزمان با هم كار ميكنند.
    در حالت عادي بايد اولين حلقه اجرا بشه و بعد حلقه ي بعد.ولي وقتي شما از اين حلقه ها در دو Thread
    جداگانه استفاده ميكنيد OS كنترل حلقه ها رو بدست ميگيره و اجازه ميده كه دو حلقه همزمان با هم كار كنند.
    بدون اينكه مشكلي پيش بياد.ولي اگه منبعي بين اين دو Thread مشترك باشند زمان بندي دسترسي به
    اين منبع (كه در برنامه ي شما يك Buffer هست ) رو بايدخودتون كنترل كنيد.اين كار با استفاده از Mutex انجام ميشه.
    كه در زمان مورد نظر ميتونه منبع رو Lock يا UnLock كنه. اينها از مباحث پيشرفته ي برنامه نويسي هستند.
    متاسفانه من با VB آشنا نيستم و با ++C و VC و #C كار ميكنم.
    خود Thread Function به اين صورت تعريف ميشه البته در ++C كه يه تابع static هست كه يك آرگومان از
    نوع LPVOID داره.
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    براي راه اندازي و متوقف كردن در VC از AfxBeginThread استفاده ميشه.ولي شما ميتونيد از اين
    API ها استفاده كنيد:
    CreateThread
    ResumeThread
    SuspendThread
    ExitThread
    ولي بدنه ي اصلي تابع Thread كه به اون ThreadProc هم گفته ميشه به شكل بالا تعريف ميشه.
    سعي كردم خلاصه و مفيد توضيح بدم.
    ميتونيد در باره يWorker Thread مطالب زيادي پيدا كنيد.
    اگه مشكلي پيش اومد اطلاع بديد.
    ممنون.
    Last edited by someone; 03-10-2006 at 17:29.

  7. #7
    آخر فروم باز smahdis's Avatar
    تاريخ عضويت
    Aug 2006
    محل سكونت
    مشهد
    پست ها
    1,138

    پيش فرض خيلي ممنون

    با سلام دوباره
    آقا Someone خيلي ممنون و دستتون درد نكنه به خاطر توضيحاتتون. ولي باز هم همان مشكل اول وجود دارد
    مشكل اينجاست كه زماني كه از Thread ها استفاده ميكنيم تنها فرقي كه دارد اين است كه برنامه هنگ يا به قول خودماني قفل نميكند. تا قبل از آن اگر از Thread ها استفاده نكنيم برنامه در همان زماني مشغول اضافه كردن نام فايلها در ليست ميباشد هنگ ميكند و بعد از آن دوباره به حالت عادي بازگشته و ليست را نشان ميدهد ولي هنگامي كه از thread ها استفاده ميكنيم برنامه به جاي اينكه به مدت دو الي سه دقيقه هنگ كند حالت عادي خود را در پيش ميگيرد و نام فايلها را در ليست اضافه ميكند و اين هم همان دو الي سه دقيقه طول ميكشه تا تمام نام ها در ليست قرار بگيرند... يعني باز هم برگشتيم به همان خانه اول!
    تنها چيزي كه معلوم است اين هست كه زماني كه از حلقه ها براي اضافه كردن در ليست استفاده ميكنيم اين مشكل پيش مي آيد در حالت عادي اگر ما بدون استفاده از حلقه ده هزار خط را در يك تكست باكس بريزيم خيلي سريعتر خواهد تا اينكه بخواهيم به صورت خط به خط و هر خط را به عنوان يك آيتم در ليست قرار دهيم.
    يك موضوع ديگر نيز مي ماند و ان اينكه در ListView خاصيتي به نام Addrange دارد كه به ظاهر ميتواند يك محدوده از اطلاعات را در ليست قرار دهد ولي من نميدونم چطوري ميشه همين كاري رو كه من ميخواهم انجام بدم رو با اين خاصيت انجام بدم تا ديگه نيازي به استفاده از For Each..Next نباشه. خيلي ممنون.
    Last edited by smahdis; 05-10-2006 at 06:55.

  8. #8
    داره خودمونی میشه mohseni12345's Avatar
    تاريخ عضويت
    Feb 2006
    پست ها
    196

    پيش فرض

    نقل قول نوشته شده توسط smahdis
    باز هم همان مشكل اول وجود دارد
    مشكل اينجاست كه زماني كه از Thread ها استفاده ميكنيم تنها فرقي كه دارد اين است كه برنامه هنگ يا به قول خودماني قفل نميكند. تا قبل از آن اگر از Thread ها استفاده نكنيم برنامه در همان زماني مشغول اضافه كردن نام فايلها در ليست ميباشد هنگ ميكند و بعد از آن دوباره به حالت عادي بازگشته و ليست را نشان ميدهد ولي هنگامي كه از thread ها استفاده ميكنيم برنامه به جاي اينكه به مدت دو الي سه دقيقه هنگ كند حالت عادي خود را در پيش ميگيرد و نام فايلها را در ليست اضافه ميكند و اين هم همان دو الي سه دقيقه طول ميكشه تا تمام نام ها در ليست قرار بگيرند... يعني باز هم برگشتيم به همان خانه اول.
    در حالت معمولی اگه خواستی کامپیترت هنگ نکنه باید از دستور DoEvents استفاده کنی
    کار این دستور اینه که به ویندوز میگه وقتی یه دستور رو به طور کامل انجام دادی بعد برو سراغ دستور بعدی
    این کار از هنگ کردن کامپیوتر جلوگیری می کنه

  9. #9
    اگه نباشه جاش خالی می مونه
    تاريخ عضويت
    Apr 2007
    پست ها
    315

    پيش فرض

    سورس نميذاريد؟
    يك جستجو كننده با قابليت ادامه جستجو ميخام

  10. #10
    اگه نباشه جاش خالی می مونه
    تاريخ عضويت
    Apr 2007
    پست ها
    315

    12 پس چي شد

    پس چي شد


صفحه 1 از 2 12 آخرآخر

Thread Information

Users Browsing this Thread

هم اکنون 1 کاربر در حال مشاهده این تاپیک میباشد. (0 کاربر عضو شده و 1 مهمان)

User Tag List

قوانين ايجاد تاپيک در انجمن

  • شما نمی توانید تاپیک ایحاد کنید
  • شما نمی توانید پاسخی ارسال کنید
  • شما نمی توانید فایل پیوست کنید
  • شما نمی توانید پاسخ خود را ویرایش کنید
  •