delphi4arab منتديات دلفي للعرب

نسخة كاملة : خطأ تنفيذي stack overflow
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
الصفحات : 1 2
السلام عليكم
عند تنفيذ البرنامج لمجموعه من مصفوفة سجلات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 : فيض في حيز ذاكرة المكدس , المحجوزة لمتغيرات/بارامترات .....البرنامج
المحمل للذاكرة بشكل مؤقت .
الحل المبدأي : إظافة التوجيهين في الـ Dpr لكي يكون التأثير على كامل المشروع
كود :
{[COLOR=#c00000][B]$RangeChecks[/B][/COLOR] OFF} {[COLOR=#c00000][B]$OverFlowChecks[/B][/COLOR] OFF}

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

uses
 
//... 
السلام عليكم
لقد اضفت التوجيهان لكن بقي الخطأ فماذا افعل
إذا ضع الإجراء المسؤول على تحرير الخطأ !
السلام عليكم
اعتقد ان التعريف هو السبب حيث انه يتم تنفيذ البرنامج نصفه ثم يتوقف عندما استخدم جدول ل100 حاله اما عندمااستخدم جدول ل50 حاله يتنفذ البرنامج فما هو الحل
السلام عليكم
تظهر لي رسالة خطأ عندما انفذ برنامجي المتكون من مصفوفة حجمها 500 وكل عنصر فيها عباره عن قيد متكون من 8 عناصر وهذه الرساله هي "stack overflow"
علما اني استخدمت الايعاز التالي "{$RangeChecks OFF} {$OverFlowChecks OFF}"لكنه لم ينفع وقد قالوا لي علي ان اكبر حجم ذاكرة دلفي لكني لا اعرف كيف اقوم بتكبير حجم الذاكرة
فما هي الخطوات لتكبير حجم ذاكرة دلفي
وعليكم السلام ورحمة الله وبركاته
الاستثناء Stack Overflow يعني ارتكاب دفع (PUSH) مفرط في الـ Stack (الحيز المحجوز من الذاكرة للبرنامج)
وعادة هذا ناجم عن حلقات غير منتهية
إقتباس :من مصفوفة حجمها 500
تأكد أن الحلقات لا تتجاوز العدد.
السلام عليكم
لقدتأكدت أن الحلقات لا تتجاوز العدد لكن مازالت الرسالهStack Overflow تظهر
علما اني عندما انفذ نفس البرنامج على بيانات اقل(مصفوفة حجمها 100 ) ينفذ ولا تظهر الرساله لكني احتاج الى(مصفوفة حجمها 500)
الصفحات : 1 2