delphi4arab منتديات دلفي للعرب
خطأ تنفيذي stack overflow - نسخة قابلة للطباعة

+- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum)
+-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3)
+--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15)
+--- الموضوع : خطأ تنفيذي stack overflow (/showthread.php?tid=2619)

الصفحات: 1 2


خطأ تنفيذي stack overflow - rose - 01-12-2010

السلام عليكم
عند تنفيذ البرنامج لمجموعه من مصفوفة سجلاتrecords تصل عددها الى 100 تظهر رسالة خطأ
"stack overflow " في حالة التعريف التالي

pp=array[1..100] of patient;//records
list=array[1..100]of integer
list1=array[1..100]of double

وتظهر رسالة خطأ "invalid floating point operation" في حالة التعريف التالي

pp=array[1..100] of patient;//records
list=array[1..100]of integer
list1=array[1..100]of double
فماهو الحل؟


خطأ تنفيذي stack overflow - TF6M - 01-12-2010

stack overflow : فيض في حيز ذاكرة المكدس , المحجوزة لمتغيرات/بارامترات .....البرنامج
المحمل للذاكرة بشكل مؤقت .
الحل المبدأي : إظافة التوجيهين في الـ Dpr لكي يكون التأثير على كامل المشروع
كود :
{[COLOR=#c00000][B]$RangeChecks[/B][/COLOR] OFF} {[COLOR=#c00000][B]$OverFlowChecks[/B][/COLOR] OFF}

- إذا حدث فيض سيكون هناك ReSet للقيم المحسوبة مثلا فيض قيمة Byte عن 255 سيكون
100$ أي 0 .
بالتوفيق,,


خطأ تنفيذي stack overflow - rose - 01-12-2010

السلام عليكم
ماذا تقصد ب Dpr وأين يوجد ممكن توضح


خطأ تنفيذي stack overflow - TF6M - 01-12-2010

- الـ Dpr File = Delph Project , نضغط على Ctrl + F12 للسويتش بين الـ Unit و الـ Project.dpr
- لا عليك , يبدو أن الإجراء المستعمل يتجاوز الـ Max المحدد للـ Record = 100
لذا أظف التوجيهين في أعلى الوحدة يكفي :
PHP كود :
unit Unit1;
 {
$RangeChecks OFF} {$OverFlowChecks OFF}
interface

uses
 
//... 



خطأ تنفيذي stack overflow - rose - 01-12-2010

السلام عليكم
لقد اضفت التوجيهان لكن بقي الخطأ فماذا افعل


خطأ تنفيذي stack overflow - TF6M - 01-12-2010

إذا ضع الإجراء المسؤول على تحرير الخطأ !


خطأ تنفيذي stack overflow - rose - 01-12-2010

السلام عليكم
اعتقد ان التعريف هو السبب حيث انه يتم تنفيذ البرنامج نصفه ثم يتوقف عندما استخدم جدول ل100 حاله اما عندمااستخدم جدول ل50 حاله يتنفذ البرنامج فما هو الحل


خطأ تنفيذي stack overflow - rose - 01-02-2011

السلام عليكم
تظهر لي رسالة خطأ عندما انفذ برنامجي المتكون من مصفوفة حجمها 500 وكل عنصر فيها عباره عن قيد متكون من 8 عناصر وهذه الرساله هي "stack overflow"
علما اني استخدمت الايعاز التالي "{$RangeChecks OFF} {$OverFlowChecks OFF}"لكنه لم ينفع وقد قالوا لي علي ان اكبر حجم ذاكرة دلفي لكني لا اعرف كيف اقوم بتكبير حجم الذاكرة
فما هي الخطوات لتكبير حجم ذاكرة دلفي


خطأ تنفيذي stack overflow - kachwahed - 01-02-2011

وعليكم السلام ورحمة الله وبركاته
الاستثناء Stack Overflow يعني ارتكاب دفع (PUSH) مفرط في الـ Stack (الحيز المحجوز من الذاكرة للبرنامج)
وعادة هذا ناجم عن حلقات غير منتهية
إقتباس :من مصفوفة حجمها 500
تأكد أن الحلقات لا تتجاوز العدد.



خطأ تنفيذي stack overflow - rose - 02-02-2011

السلام عليكم
لقدتأكدت أن الحلقات لا تتجاوز العدد لكن مازالت الرسالهStack Overflow تظهر
علما اني عندما انفذ نفس البرنامج على بيانات اقل(مصفوفة حجمها 100 ) ينفذ ولا تظهر الرساله لكني احتاج الى(مصفوفة حجمها 500)