چرا در استفاده از for برنامه هنگ میکنه.
با سلام به همه دوستان
یه برنامه نوشتم که میاد از 4 تا تیبل اطلاعات رو میخونه به صورت زیر
اول از تیبل یک ، یک عدد و از تیبل دوم یه عدد دیگه رو میخونه ضربدر هم میکنه و در یه متغیر میریزه و تقسیم بر یه عدد داخل تیبل سوم می کنه و جمعشو میریزه داخل تیبل چهارم و درون یه گرید نشون میده.
حالا یه مشکل: اینکارهارو من با حلقه انجام میدم . نمیدونم چرا وقتی اطلاعات زیاده و تیبلا پره برنامه هنگ میکنه و قفل میشه. باید از چی استفاده کنم که برنامه قفل نکنه .
ممنون اگه جوابمو بدید.
نقل قول: چرا در استفاده از for برنامه هنگ میکنه.
اول بگید که از چه دیتابیسی استفاده میکنید. بجای For از دستورهای خود SQL استفاده کنید. برای تمامی اعمال ریاضی :
SELECT AliasName= <Calculate Expression> From MyTable
یا
SELECT <Calculate Expression> As AliasName From My Table
نقل قول: چرا در استفاده از for برنامه هنگ میکنه.
ممنون از دوستان بابت جوابتون
از بانک Access 2003 استفاده می کنم
در ضمن من داخل بانک اول یک سری هزینه رو به دست میارم که حلقه دوم به این هزینه ها برای عملیاتش نیاز داره و در حلقه دوم کلیه هزینه ها با کلیه مبالغ پرداختی طرف حساب محاسبه میشه و در حلقه آخر صورت حساب مشتری محاسبه میشه
که همه این ها باید با هم دیگر محاسبه بشه چون به همدیگر نیاز دارند و من از حلقه For استفاده کردم چون راه دیگه پیدا نکردم
من از دستورات sql در حلقه استفاده میکنم اما باز برنامه به علت ازدیاد رکوردها و دیتا هنگ میکنه.
ممنون
نقل قول: چرا در استفاده از for برنامه هنگ میکنه.
نقل قول:
من از دستورات sql در حلقه استفاده میکنم اما باز برنامه به علت ازدیاد رکوردها و دیتا هنگ میکنه.
منظور از هنگ کردن اینه که برنامه کمی هنگ می کنه و با رسیدن به آخر جدول ، حلقه به پایان می رسه و برنامه به حالت عادی بر می گرده ؟ یا اینکه حلقه اصلا به پایان نمی رسه و برنامه از حالت هنگ ! بیرون نمی یاد ؟
اگه مشکل حالت اوله ، می تونید در پایان حلقه از ProcessMessages استفاده کنید ، مثال :
for I := 0 to 10 do
begin
...
application.ProcessMessages;
end;
اما اگه مشکل حالت دومه ، بهتره کدی که در حلقه می نویسید اینجا بزارید تا جواب بهتری بگیرید ...
موفق باشید ...
نقل قول: چرا در استفاده از for برنامه هنگ میکنه.
(البته اگه در كدنويسي اشتباهي نكرده باشيد) احتمالا برنامه شما هنگ نميكنه و برنامه درحال انجام كار خودش هست
شايد زمان انجام دستورات و به پايان رسيدن حلقه طولاني هست.
نقل قول: چرا در استفاده از for برنامه هنگ میکنه.
نقل قول:
البته اگه در كدنويسي اشتباهي نكرده باشيد) احتمالا برنامه شما هنگ نميكنه و برنامه درحال انجام كار خودش هست
شايد زمان انجام دستورات و به پايان رسيدن حلقه طولاني هست
احسنت دقیقا همینه که این دوستمون میگه.
چون وقتی اطلاعات کمه برنامه یه هنگ چند ثانیه ای می کنه و نتیجه رو اعلام می کنه .
البته این هنگ منطقیه چون استفاده از حلقه میاد و کل حافظه رو چند ثانیه کامل می گیره و محاسبات رو انجام میده و نتیجه اعلام میشه و سیستم از هنگ در میاد.
اومدم و دستورات محاسباتم رو گزاشتم داخل تایمر که سیستم هنگ نکنه اما چون تایمر بر اساس اینورتال عمل می کنه وقتی به زمان اینورتال میرسه چه محاسبات انجام شده باشه چه انجام نشده باشه میره رکورد بعدی ، که بازم اینجا برنامه قفل می کنه.
چیکار کنم این محاسبات کوفتی رو که راحت انجام بشه و سیستم قفل نکنه.
مدت زمانش زیاد مهم نیست.
ممنون از دوستان.
نقل قول: چرا در استفاده از for برنامه هنگ میکنه.
نقل قول:
چیکار کنم این محاسبات کوفتی رو که راحت انجام بشه و سیستم قفل نکنه.
مشکلتون با Process Messages حل نشد ؟
اگر عملیات سختی ! در حال انجام هست بهتره از Thread استفاده کنید ...
موفق باشید ...
نقل قول: چرا در استفاده از for برنامه هنگ میکنه.
سلام.
دوست عزیز میتونی از quary خود accessاستفاده کنی بعد از خروجی اون استفاده کنی .اینجوری اطلاعات بدون اومدن تو dataset پردازش میشن و خروجی سبک میاد تو دیتاست.
اگر نمیدونید چجوری تیبلاتون با فیلداش را اینجا بگید و بگید چه فیلیدی مورد نظرتونه تا بگم.
برای راهنمایی بهتر for های برنامه خودتونم بنویسید.
نقل قول: چرا در استفاده از for برنامه هنگ میکنه.
خب براش يه SPLASH درست كن
نقل قول: چرا در استفاده از for برنامه هنگ میکنه.
بهترين گزينه براي مشكله شما استفاده از thread هاست.
با استفاده از توابع api تردينگ رو امتحان كنيد كه خطايي مي ده يا نه ! اين كار خيلي راحته و فقط يه تابع مي سازين و به ترد مي فرستيدش پس خيلي سريع مي تونيد تست كنيد.
اگه خطايي دريافت كرديد از كلاسه tthread ه خوده دلفي استفاده كنيد.
نقل قول: چرا در استفاده از for برنامه هنگ میکنه.
به نظرتون بهتر نیست اول همه اعداد از سه تیبل رو بخونید (با یه کوئری) یعد تو یه حلقه For که طبیعتا سریعتر هم اجرا می شه روشون محاسبات انجام بدید؟
نقل قول: چرا در استفاده از for برنامه هنگ میکنه.
نقل قول:
به نظرتون بهتر نیست اول همه اعداد از سه تیبل رو بخونید (با یه کوئری) یعد تو یه حلقه For که طبیعتا سریعتر هم اجرا می شه روشون محاسبات انجام بدید؟
نمیشه عزیز . همه باید با هم محاسبه بشن.
نقل قول: چرا در استفاده از for برنامه هنگ میکنه.
چرا از حلقه For استفاده میکنید؟ مگه تعداد رکوردهای جدولتون ثابته و تعداد رکوردها مشخصه؟
به نظر شما نباید از حلقه While استفاده کنید؟
نقل قول: چرا در استفاده از for برنامه هنگ میکنه.
نقل قول:
چرا از حلقه For استفاده میکنید؟ مگه تعداد رکوردهای جدولتون ثابته و تعداد رکوردها مشخصه؟
به نظر شما نباید از حلقه While استفاده کنید؟
...
For I := 0 to ADOTable.RecordCount do
موفق باشید ...
نقل قول: چرا در استفاده از for برنامه هنگ میکنه.
نگفتي چرا براش يه splash با عنوان "لطفا صبر كنيد" نميسازي؟
نقل قول: چرا در استفاده از for برنامه هنگ میکنه.
دوست عزیز اگه کدتون رو اینجا قرار بدید مطمئن باشید مشکلتون سریعتر حل میشه