ايران ويج

نسخه‌ی کامل: تایمر با دقت یک هزارم هزارم ثانیه!
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
صفحه‌ها: 1 2 3
آها ای ول اینو دیگه Biggrin
خوب دقت اینم یک میلی ثانیه هست Biggrin
لطفا یه ذره در مورد Address of و تابع هایی که کاربرد داره مثال بزن.
ممنون
بای
ی خوای چه کلکی به CPU بزنی
اين بحث مربوط ميشه به برنامه نويسي سي كه قابليت كنترل ژيامها رو داره و چون تويه ويژوال بيسيك چنين قابليتي نيست. نميشه از دستور SetTimer داخل وي بي استفاده كرد
SetTimer یه تابع api هست و ربطی به زبان برنامه نویسی نداره
اگه می خوای یه سورس بزارم تا ببینی
چه حرف هایی از set timer نمیشه استفاده کرد . (اول فکر کن بعد حرف بزن )
تو میتونی از while استفاده کنی. (خودت یعنی یک تایمر بنویسی ولی سرعت برنامت خیلی میاد پایین .
بهترین راه رو مکانیسمی در ویندوز با نام Multimedia Timer ارائه می کنه که در فایل winmm.dll تعریف شده . این نوع تایمر ها دارای دقت بسیار زیادی هستند و میتونند به همون دقتی که شما میخوای برسند حتی کمتر ولی محدودیت هایی هم دارند .
استفاده از این تایمر ها بطور مستقیم توی وی بی مشکلات زیادی رو خصوصا در هنگام debug کردن به همراه داره . لینک زیر یک برنامه هست که با وی بی نوشته شده و طبق گفته برنامه نویسش ، با کمک از ActiveX DLL و تکنیک های مختلف ، موفق شده Multimedia Timer رو برای محیط وی بی بهینه کنه به شکلی که کاملا کنترل شده عمل کنه . خوبه خودتون ببینید :

http://www.vbaccelerator.com/home/vb/cod...rticle.asp
Mamad2003 نوشته است:لینک زیر یک برنامه هست که با وی بی نوشته شده و طبق گفته برنامه نویسش ، با کمک از ActiveX DLL و تکنیک های مختلف ، موفق شده Multimedia Timer رو برای محیط وی بی بهینه کنه به شکلی که کاملا کنترل شده عمل کنه . خوبه خودتون ببینید :http://www.vbaccelerator.com/home/vb/cod...rticle.asp
می بینم که بالاخره یکی به vbaccelerator بها داد Clap
یکی از اساتید دانشگاه میگفت که برای کارهای حساس از تایمر و اینا استفاده نکنین ... چون ویندوز جایزالخطاس و در کارهای حساس حتی 2 درصد خطا ممکنه کل محاسبات را برعکس کنه ...
چرا نمی شه از SetTimer استفاده کرد.
تو planetsourcecode هم می گشتس 20000000000000% بو د .
آخر آقا محمد دست به کار شدن :
Iron_Fist نوشته است:SetTimer یه تابع api هست و ربطی به زبان برنامه نویسی نداره
اگه می خوای یه سورس بزارم تا ببینی

بشه يه سورس بذار كه درست كار كني
و از تايمري كه داخل برنامه تعريف كردي داخل همون برنامه استفاده كني

يادت باشه WideCharToMultiByte هم يه تابع API هست ولي تويه وي.بي جواب درست نميده


اونايي كه برنامه نويسي سي ميكنن خيلي خوب دليل اين رو ميدونن . علتش هم اينه كه اين تابع بعد از فراخواني يك پيام به اسم WM_TIMER توليو ميكنه كه lparam اين ژيام شماره تايمر يا همون آي.دي تايمره و امكان كنترل ژيامها در وي.بي براي كاربرها وجود نداره
اینم سورس
نقل قول: يادت باشه WideCharToMultiByte هم يه تابع API هست ولي تويه وي.بي جواب درست نميده
حالا مشکل این SetTimer حل بشه انشا... روی اونم بحث می کنیم
نقل قول: اونايي كه برنامه نويسي سي ميكنن خيلي خوب دليل اين رو ميدونن . علتش هم اينه كه اين تابع بعد از فراخواني يك پيام به اسم WM_TIMER توليو ميكنه كه lparam اين ژيام شماره تايمر يا همون آي.دي تايمره
درسته که در وی بی چیزی به اون مفهومی که در وی سی ++ هست
به نام آی دی وجود نداره ولی بلاخره برای تفکیک( پارامتر nIDEvent در تابع SetTimer یا KillTimer ) تایمر ها در وی بی از شماره استفاده می شه
که می شه همون آی دی تایمر نامیدش هر چند که اون مفهوم وی سی ++
رو نداره که هر کنترلی یه آیدی داره حتی منو و هر چیز دیگه ...
نقل قول: امكان كنترل پيامها در وي بي براي كاربرها وجود نداره
چرا نمی شه خوبم می شه
http://www.iranvig.com/forum/attachment.php?aid=238


صفحه‌ها: 1 2 3