Stack overflow какво е това
Описание на проблема: Извършени са действия под W98. При стартиране на програмата възникна грешка на английски „Stack full“ и шестнадесетични числа. Програмата използва база данни. Може би не затварям нещо там. Грешката се появи само два пъти, на различни версии на програмата, след което веднага изчезна сама. Въпреки че си спомням при компилирането, той също веднъж даде същото нещо, но веднага премина, под Windows XP, не придадох никакво значение на това.
И така, как да избегнете тази грешка. Защото това е грешка в „тъмната гора“, дори не знам къде да търся. Ами ако се повтори, първата ми може да се каже, че е програма, която ще се използва и не работи много добре. Помогнете на братя по ум на начинаещ програмист.Благодаря ви.
Ако числата някъде са равни на 000000?? тогава има грешки в Delphi Изход: ако знаете Debug, тогава отстранявайте програмната област
←→sergey1 ( 2004-09-08 15:43 ) [2]
Без код е трудно да се разбере нещо. Може би някоя процедура е част от рекурсия или безкраен цикъл.
положението би било много по-катастрофално, ако - в папуаски
"на английски" - най-ценната информация по темата !!
> при компилирането също веднъж даде същото
просто "при компилиране" на английски се случва този проблем. а в папуаски - вече в run-time.
изобщо мислиш ли какво говориш какво по дяволите е "компилация"?! Вие ВЕЧЕ сте започнали процеса! когато получих това съобщение!!
което означава "пометен" .. явно не беше диария
ето един пример (грубо)
procedure TForm1.Edit2Change(Sender: TObject); begin Edit2.Text := Edit2.Text + "1"; end;
←→sergey1 ( 2004-09-08 16:22 ) [6]
не тормозете човека
>Edit2.Text := Edit2.Text + "1";
Причинява ли ви препълване на стека?
опитай да караш както трябва, ако грешката излиза на различни оси и различни компютри, но не винаги, тогава в програмата ти идват някои условия от време на време, които водят до това, тествай я както трябва и изрови грешката
>>sergey1 (08.09.04 16:22) [6] Не се подигравам когато се опитате да въведете в полето Edit1, възниква събитието OnChange, в чийто манипулатор Edit1.Text се променя отново и следователно възниква събитието OnChange, в манипулатора на което Edit1.Text се променя отново и следователно възниква събитието OnChange s, в манипулатора на който Edit1.Text се променя отново и , следователно Stack Overflow
Ето още един пример със StringGrid "обработка" OnSelectCell:
procedure TForm1.StringGrid1SelectCell(Sender: TObject; ACol, ARow: Integer; var CanSelect: Boolean); begin StringGr >end;
. Препълване на стека т.е. ако има промени в свойствата на обекта в манипулатора на събития, които повторно повдигат събитието