PDA

View Full Version : سوال: مشکل با بررسی زمان توسط تایمر هنگام پخش صوت



mbshareat
چهارشنبه 19 مهر 1391, 09:40 صبح
سلام
من تو برنامم میخوام یه فایل صوتی رو اجرا کنم و هر صد میلی ثانیه بررسی کنم که پخش صوت تا کجا پیش رفته و در صورت نزدیک شدن به طول خاصی از صوت برحسب میلی ثانیه به ابتدای فایل یا به نقطه معین شده قبلی پرش کنم.(;MediaPlayer1.TimeFormat:=tfMilliseconds)
بعضی وقتها کاری که میخوام انجام میشه ولی بعضی مواقع از نقطه رد میشه و پرش به قبل صورت نمی گیره!
من قبلا Interval رو پنجاه گذاشته بودم خطاش بیشتر بود حالا روی صد تنظیمش کردم باز ایراد داره.
آیا عملکرد تایمر جوریه که ممکنه هر واحد زمانی (به اندازه Interval) که بگذره OnTimer اجرا نشه و فقط وقتی کار دیگه ای کامپیوتر رو مشغول نکنه عمل می کنه؟ یعنی اگه یه ثانیه ده تا صد میلی ثانیه داره ممکنه فقط هشت بار OnTimer اجرا بشه؟
یا MediaPlayer.Position خیلی دقیق نیست؟
یا کدم ایراد داره؟(اگه ایراد داره چرا معمولا درست کار میکنه؟)

Felony
چهارشنبه 19 مهر 1391, 09:52 صبح
آیا عملکرد تایمر جوریه که ممکنه هر واحد زمانی (به اندازه Interval) که بگذره OnTimer اجرا نشه و فقط وقتی کار دیگه ای کامپیوتر رو مشغول نکنه عمل می کنه؟
اگر تو Main Thread برنامتون پروسه سنگینی رو اجرا میکنید ( حلقه یا خواندن فایل یا ... ) رویداد OnTimer شئ تایمر تا پایان یافتن این پروسه سنگین Call نمیشه .


یعنی اگه یه ثانیه ده تا صد میلی ثانیه داره ممکنه فقط هشت بار OnTimer اجرا بشه؟
جوابتون همون مورد بالا هست .


یا MediaPlayer.Position خیلی دقیق نیست؟
خیر ، مشکلی نداره .


یا کدم ایراد داره؟(اگه ایراد داره چرا معمولا درست کار میکنه؟)
میخوای کدت رو حدس بزنیم بعد بگیم ایراد داره یا نه ؟!

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

BORHAN TEC
چهارشنبه 19 مهر 1391, 12:02 عصر
یک راه حل خیلی ساده استفاده از کامپوننت TJvThreadTimer موجود در JVCL است.

mbshareat
چهارشنبه 19 مهر 1391, 18:21 عصر
راستش میخوام برنامم روتوی سایت بذارم
نمی دونم کسی حوصله داره کدم رو بررسی کنه یا نه.
کدم خیلی سر راست نیست و اصول برنامه نویسی هم ممکنه یه جاهایی از اون رعایت نشده باشه.
آقای Mahan-1363 اگه ممکنه یه نگاهی بهش بندازین. واقعا ممنون میشم.
یه توضیح:
قبل از اجرای برنامه یونیتهای داخل پوشه Additional رو نصب کنین.
بعد با فشار Insert نقطه انفصال ایجاد کنید بعد تعداد تکرار رو تنظیم کنید.
گاهی قبل از اینکه تعداد تکرار کامل بشه میره مقطع بعد!

mbshareat
چهارشنبه 19 مهر 1391, 23:44 عصر
اگه هر پنجاه میلی ثانیه شرط رو بررسی کنم احتمال فراخوانی نشدن OnTimer کمتر میشه؟
به این صورت که تو دوتا پنجاه میلی ثانیه مونده به موقعیت خاص از فایل صوتی شرط رو بررسی کنم.
(البته حواسم هست باید یه تغییری توی شرط بدم!)