PDA

View Full Version : سوال: کدی که ازش exe ساختم با کدی که هنوز تو پراجکت هست،مثل هم اجرا نمیشن؟



amazon2
شنبه 28 آبان 1390, 17:14 عصر
سلام
من یه مشکل ساده اما عجیب! دارم.
یه برنامه نوشتم که 2 تا تایمر داره و یه شکل داره که توسط تایمر اول حرکت میکنه. تو تایمر اول نوشتم که از خاصیت left شکل کم بشه، و اگر کمتر از 1000- شد یه msg box ظاهر بشه.

توی تایمر دوم اینو نوشتم: ( لیبل به مقدارش اضافه شه، اگر به عدد15 رسید ، یه msg box نشون بده که بعدش برنامه خارج شه.
Timer2:
Label.Caption = Val(Label4.Caption) + 1
If Label4.Caption = "15" Then
MsgBox ("Game Over")
End
End If

خب این برنامه رو که اجرا میکنم مشکلی نداره ، بعد از اینکه msg box ظاهر میشه ، تایمر دوم بطور موقت موقف میشه و برنامه درست کار میکنه.

http://www.pic.iran-forum.ir/images/qb2blxocomdc5fut3bhu.jpg



ولی وقتی ازش exe میسازم بعد از اینکه msg box اول ظاهر میشه، تایمر دوم متوقف نمیشه و باعث میشه لیبل به عدد 15 برسه و بعد msgbox دوم ظاهر میشه.
http://www.pic.iran-forum.ir/images/djuk515qbta43s97npws.jpg

و این باعث میشه برنامه من بهم بریزه.
ایا راهی برای حل این مشکل هست؟اصلا چطور ممکنه کدی که ازش exe ساختم با کدی که هنوز exe نساختم اجراشون با هم فرق کنه؟
چطور میشه وقتی msg box اول ظاهر میشه ،تایمر دوم موقتا غیرفعال بشه؟

Mr'Jamshidy
شنبه 28 آبان 1390, 17:19 عصر
قبل از MSGBOX بنویس
Timer1.Enabled = False
بعد از Mshbox بنویس
Timer1.Enabled = True

ولی خودمونیم این اولین باریه که به به همچین چیزی بر میخورم

amazon2
شنبه 28 آبان 1390, 18:33 عصر
دوست عزیز بازم تغییری نکرد.

واقعا منم موندم اصلا چرا کدی قبل از exe کردنش و بعد exe اش باهم فرق میکنه.

mr-adler
شنبه 28 آبان 1390, 18:40 عصر
دوست عزیز بازم تغییری نکرد.
کد پست دوم جواب میده .امتحان کردم

Private Sub Timer1_Timer()
Label1.Caption = Label1.Caption + 1
End Sub

Private Sub Timer2_Timer()
Timer1.Enabled = False
a = MsgBox("hello")
Timer1.Enabled = True
Timer2.Enabled = False

End Sub


واقعا منم موندم اصلا چرا کدی قبل از exe کردنش و بعد exe اش باهم فرق میکنه.
من هم با همین موضوع مشکل داشتم سوالتون باعث شد جواب رو متوجه بشم.
ممنونم

M.T.P
شنبه 28 آبان 1390, 19:07 عصر
چطور میشه وقتی msg box اول ظاهر میشه ،تایمر دوم موقتا غیرفعال بشه؟

تابع Msgbox و توابع موجود در CommonDialog در حالت دیباگ کل پروسیجرهای برنامه رو تا زمانی که تکلیفشون رو مشخص نکنید متوقف می کنند.
این موضوع فقط در حالت دیباگ به این شکل هست و در فایل اجرایی کامپایل شده فقط پروسیجر جاری رو در همون خط از کد نگه می داره تا اینکه کاربر واکنش لازم رو نشون بده و به بقیه event ها کاری نداره.

MohammadGh2011
شنبه 28 آبان 1390, 19:10 عصر
سلام عليکم

ببينيد دوست عزيز من هم يه همچين چيزي نوشته بودم،چون شما کادرپيامتون رو داخل تايمر نوشتين باعث ميشه که پشت سر هم اون پيام به نمايش در بياد و شما بايد تايمر رو غير فعال کنيد.کد آقاي جمشيدي درسته.من به صورت زير تو اون بازي عمل کردم کد زير رو بررسي کنيد.
ديگه کدها راحته و من هم وقت زيادي ندارم که ويرايششون کنم .شما خودتون بررسي بفرماييد.
Private Sub Timer2_Timer()
If Val(Label6) = "-100" Then
Command3.Enabled = False
Command1.Enabled = False
Timer1.Enabled = False
Command4.Visible = True
MsgBox "Your Score is -100 and Game is Finished", vbExclamation, "You Lose"
Label8.Caption = "10"
Timer2.Enabled = False
ElseIf Val(Label6) = "100" Then
MsgBox "Your Score is 100 and You Win the Game", vbInformation, "You Win"
Label8.Caption = "10"
Timer2.Enabled = False
End If
End Sub



موفق باشيد