PDA

View Full Version : پیغام خطای overflow



maleknasab
سه شنبه 23 دی 1382, 12:07 عصر
سلام
با استفاده از یک dllکه درون دایرکتوریsystemریخته ام و توابع آنرا درون vbتعریف کرده ام وبه کمک یک تابع به نامdelayusیک تاخیر در حد (میکرو ثانیه)در برنامه ام ایجاد می کنم به کمک خط زیر
(( delayus (t-k(i
که tیک متغیر از نوع double بوده ومقدار آن همیشه ثابت وبرابر باt=16181میباشد و( k(i نیز یک آرایه از نوع variant بوده (به خاطر ماهیت برنامه باید از نوع variantباشد)و 46 عنصر دارد که همگی بصورت صعودی مرتب شده اندو بیشترین مقدار این آرایه 8000 میباشد این برنامه درون یک حلقه کار میکند وهر بار که حلقه تکرار میشود با توجه به مقدار ( k(i تاخیری متناسب طبق
د ستور بالا ایجاد میگردد اما در بعضی از اوقات روی خط بالا بعد از چندین بار اجرا خطایovrerflow
پیش می آید و وقتی دو متغیر بالا را چک می کنم مقادیر tو (k(i درست بوده وحاصل عبارت مثبت بوده و هیچگونه سر ریزی اتفاق نیا فتاده است . نمی دانم ایراد از کجاست لطفا راهنمایی بفرمایید
با تشکر

A.Noor
سه شنبه 23 دی 1382, 12:38 عصر
با سلام
برای تاخیر در اجرای برنامه از توابع لازم برای اینکار استفاده کنید.
http://www.barnamenevis.org/forum/viewtopic.php?t=5907
من نمی‌دونم که این تابع شما چطوری کار می‌کنه اما اگر با سر و کله زدن با یک آرایه این تاخیر را ایجاد می‌کنه باید بگم که راه خوبی انتخاب نکرده اید چرا که این میزان تاخیر بستگی به سرعت کامپیوتر پیدا می‌کنه و روش استانداردی نیست.

S.Azish
سه شنبه 23 دی 1382, 14:53 عصر
زمانی که متغیری رو از نوع Variant تعریف میکنید بنا به مقدار اولیه که به اون میدید VB نوع اولیه متغیر رو تعیین میکنه. احتمالآ مقدار اولیه که شما به آرایه Variant میدید و مقدارهای بعدی تفاوت زیادی دارن. به نظر من آرایه خودتون رو با مقادیر زیاد در ابتدا تعریف کنید



for i = 0 to 25
k(i) = 1000000
Next

maleknasab
چهارشنبه 24 دی 1382, 00:08 صبح
با سلام
آرایه ای که من تعریف کرده ام بصورت زیر است
k = Array(100, 170, 260, 360, 480, 580, 670, 780, 890, 1000, 1100, 1180, 1280, 1380, 1480, 1580, 1700, 1850, 1950, 2100, 2200, 2320, 2450, 2550, 2700, 2850, 3100, 3400, 3600, 3800, 4000, 4150, 4300, 4500, 4750, 4950, 5150, 5350, 5620, 5900, 6100, 6350, 6650, 6900, 7150, 7500) که 46 عنصر داردوهر بار که i افزایش مییابد عنصر بعدی آرایه درون( k(i
قرار می گیردووقتی به انتهای آرایه میرسد (i) را یک کرده و دوباره آرایه را طبق مقادیر بالا مقدار دهی میکند بنا بر این بین مقا دیر اول و بعدی هیچ تفاوتی وجود ندارد؟ با تشکر

maleknasab
چهارشنبه 24 دی 1382, 10:53 صبح
حضور آقای a.noor
احترامابه عرض می رسانم که تابع sleep می تواند تا خیری در حد میلی ثانیه ایجاد کند و لی من تاخیری در حد میکرو ثانیه لازم دارم
و جسا رتا جهت یاد آوری عرض میکنم هر یک میکرو ثانیه برابر با یک هزارم میلی ثانیه می باشد . :?: :?: