|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу. Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста". Название темы слишком короткое или не отражает сути вашего вопроса. Тема исчерпала себя, помните, один вопрос - одна тема Прочитайте правила и заново правильно создайте тему. |
|
Опции темы | Поиск в этой теме |
25.04.2009, 04:31 | #1 |
Пользователь
Регистрация: 13.05.2008
Сообщений: 12
|
не могу найти почему вылетает прога
Добрый день, если кто знает в чём ошибка plz хелп
при многократном спаме кнопки procedure TForm5.Button1Click..........; программа вылетает с ошибкой стак оверфлор. Вот листинг касячного модуля,а архиве исходники , в самой проге Моделирование-Лаб.Раб. 4 < Код:
форумная заливался не работает, залил архив сюда http://www.sharemania.ru/files/manag...Owc0hOzZMSqSja |
25.04.2009, 05:09 | #2 |
Форумчанин
Регистрация: 07.04.2009
Сообщений: 117
|
У меня Delphi вообще при загрузке проекта выдала I\O error и сдохла...
Значит stack overflow? Это бывает по двум причинам: 1) Слишком большая вложенность подпрограмм (особенно методов) 2) Большое число входных параметров у функций + первое Решения: 1) Оптимизировать программу (незнаю как влияют на стэк локальные переменные, но ты бы чтоли в массиве или структуре хранил такое число значений и передавал бы по сцылке). 2) Подтянуть стэк до нужного уровня (что не есть хорошо, и если по хорошему - то это плохо, но удобно). Делается это в ProjectOptions\Linker\MemorySizzes 3) Читать это невыносимо, но посмотри - может быть ты объекты создаешь и не уничтожаешь? А вообще, "как правильно оформлять код" учат, обычно, раньше чем ООП.
Copyright © qpokyc (qpy[the dog]bk.ru), 2008-2009 г.
Последний раз редактировалось qpokyc; 25.04.2009 в 05:15. |
25.04.2009, 05:49 | #3 |
Пользователь
Регистрация: 13.05.2008
Сообщений: 12
|
я уж извиняюсь но где ты нашел большое число ВХОДНЫХ параметров у функций?
Стэк стоик максимально возможный. 1) Времена когда память переполнялась из-за 20 локальных переменных прошли лет 20 назад уже =) 2)Про стек я уже сказал 3)Никаких объектов я не создаю, а переменные все обнуляются; код написал на код гире 2009 возможно по этому ты не смог его открыть. Про насмешку про то "как правильно оформлять код" я промолчу, но если вам по делу сказать было нечего не стоило ничего отвечать |
25.04.2009, 07:27 | #4 |
Форумчанин
Регистрация: 04.04.2009
Сообщений: 438
|
Память надо чистить.
Код:
Ежели (для теста) ткнуть пару-тройку раз, то никаких ошибок не появляется. |
25.04.2009, 13:55 | #5 | |||
Пользователь
Регистрация: 13.05.2008
Сообщений: 12
|
Цитата:
Цитата:
Вы такой классный, советуете почистить результирующий массив? Цитата:
А тыркать кнопку 10 раз нужно хотябы потому что 10 раз могут меняться начальные данные, и что теперь прогу перезагружать если хочешь промоделировать заново? Вот листинг косячного кода, но я не могу понять в чем касяк Код:
и Код:
нашел ошибку Код:
Последний раз редактировалось Stilet; 27.04.2009 в 10:19. |
|||
25.04.2009, 15:08 | #6 |
Форумчанин
Регистрация: 31.05.2007
Сообщений: 486
|
Здесь как-то не очень четко контролируется переменная t. Возможно она выходит за допустимые пределы, точнее она превышает размер массива ochered, ведь везде используется ochered[t][...] и при этом в цикле While (x<time1) do с переменной time1 сравнивается не t, а x.
Последний раз редактировалось Jeni; 25.04.2009 в 15:11. |
25.04.2009, 15:14 | #7 | ||
Пользователь
Регистрация: 13.05.2008
Сообщений: 12
|
Цитата:
Код:
Цитата:
Я моделирую рабочий день библиотеки,X это, если не вдаваясь в детали, текущее время, time1 это время рабочего деня, a t это счётчик который увеличивается каждый раз когда приходит читатель с заданным интервалом. Последний раз редактировалось Stilet; 27.04.2009 в 10:19. |
||
25.04.2009, 15:24 | #8 |
Форумчанин
Регистрация: 31.05.2007
Сообщений: 486
|
Больше всего непонятно следующее: массив ochered объявляется как одномерный setlength(ochered,time1), а используется как двумерный ochered[t][1]
|
25.04.2009, 15:40 | #9 |
Пользователь
Регистрация: 13.05.2008
Сообщений: 12
|
Мда...
type Chelovek=array[1..20] of integer; ....... var Ochered:array of chelovek; надеюсь я для вас Америку не открыл. |
25.04.2009, 15:47 | #10 |
Форумчанин
Регистрация: 31.05.2007
Сообщений: 486
|
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Не могу понять почему вылетает 3 процедурка, помогите | Taisja | Помощь студентам | 2 | 04.06.2008 21:28 |
прога пишет ошибку при открытии файла (почему?) | nicky777 | Общие вопросы Delphi | 2 | 14.03.2008 17:56 |
Есть готовая прога но запароленная, не могу запустить! | Алёна | Общие вопросы Delphi | 4 | 29.10.2007 10:41 |