PDA

View Full Version : کمک در مورد timer array



allaf2
پنج شنبه 28 مهر 1390, 13:06 عصر
با درود

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

آیا میشه از timer array استفاده کرد؟
یعنی تایمر رو چندین بار لود کرد؟
اگر میشه، چجوری؟

arenaw
پنج شنبه 28 مهر 1390, 13:39 عصر
سلام
تایمر وقتی که لود بشه، خودش مثل for عمل میکنه و تا زمانی که غیر فعالش نکنی تکرار میشه و نیاز نیست هر دفعه اونو فعال کنی

allaf2
پنج شنبه 28 مهر 1390, 13:57 عصر
سوالم رو یک جور دیگه مترح میکنم.
من 33 تا Yahoo ID رو لاگین میکنم.
میخوام وقتی هر کدوم لاگین شد جلوش که تایمر به شکل 0:0:0 شروع به شمردن کنه که نشون بده هر ID چه مدت لاگین هست.
حالا میخوام بدونم برای هر ]ِ ID یک timer مجزا لازمه؟ یا اینکه مثل winsock میشه تایمر رو هم به صورت نا محدود لود کرد!

M.T.P
پنج شنبه 28 مهر 1390, 14:11 عصر
با درود

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

آیا میشه از timer array استفاده کرد؟
یعنی تایمر رو چندین بار لود کرد؟
اگر میشه، چجوری؟

برای محاسبه زمان سپری شده به هیچ وجه از تایمر و متغیر شمارنده استفاده نکنید.


Private Sub Timer1_Timer()
i = i + 1
End Sub
دلیل: چنانچه زمان مورد نیاز برای پردازش یکی از پروسیجرهای برنامه شما بیشتر از اینتروال تایمر شود ، تایمر مجبور است تا پایان یافتن پروسیجر مذکور صبر نماید و با این وجود اینتروال برای محاسبه زمان سپری شده یعنی اشتباه .

برای محاسبه بسیار دقیق زمان سپری شده باید از تابع GetTickCount که زمان Runtime ویندوز هست استفاده کنید.

یک پروژه جدید ایجاد کنید.
یک تایمر با هر اینتروالی که دوست دارید روی فرم قرار دهید.
کد فرم:



Option Explicit

Private Declare Function GetTickCount Lib "kernel32" () As Long
Dim IntTick As Long

Private Sub Form_Load()
IntTick = GetTickCount
End Sub

Private Sub Timer1_Timer()
Cls
Print (GetTickCount - IntTick) \ 1000
End Sub

arenaw
پنج شنبه 28 مهر 1390, 15:08 عصر
به گفته جناب M.T.P این روش اشتباهه ولی امتحان کنید شاید به کارتون بیاد:
مواد لازم : یک عدد تایمر با اینترول 1000
33 عدد چک باکس به صورت آرایه ای (این ها همون yahoo id ها هستن مثلا)

Private Sub Timer1_Timer()
For i = 0 To 32
If Check1(i).Value = 1 Then Check1(i).Caption = Val(Check1(i).Caption) + 1
Next
End Sub