|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Просьба о помощи. Полный крах там где его быть не должно.
Народ помогите решить проблему! Писал писал прогу - работала и все было в порядке. Потом чуток ее еще подкорректировал и она теперь падает там, где ну никак упать она не может!
Ошибка такая - здесь скриншот: http://clip2net.com/clip/m0/12735176....png?nocache=1 Ладно бы падала при записи в переменные - но она падает тупо там, где достает данные из переменных и пишет их в поля ввода. Падает прога на этой процедуре: http://clip2net.com/clip/m0/12735179....png?nocache=1 Исходник здесь: ftp://m-1global.com/2010/Poster/src.rar Сама прога работает на расчет. Не работает оптимизация по Нелдеру-Миду. Чтобы понять ошибку проверните сей алгоритм - флажок оптимизации надо поставить, зайти в параметры, отметить там D1 и D2, в окошке вводить ограничение справа больше чем слева, ок и запустить оптимизацию. Можно сразу F4 нажать на процедуре ShowBaseData в первом модуле и поглядеть как весело прога падает на ровном месте, блин. Исходники прилагаю чтобы не было сомнений на тему вредоносного кода. Диплом пишу - и тут такая блин незадача. Заранее благодарен!!! |
#2
|
|||
|
|||
Выложи проблемное место прямо в форум (у меня на работе не пускают туда, куда ты выложил). Вообще, это может быть либо несовпадение типов, либо чтение из неинициализированных переменных/объектов.
|
#3
|
|||
|
|||
Перезалил вот сюда:
http://wizland.ru/src.rar Цитата кода ничего не даст по сути - в ней нет ошибок. Но именно на этой процедуре падает программа: Код:
procedure ShowBaseData; begin //массы поршней и объекта form1.Edit13.Text:=floattostr(mas[1]); form1.Edit14.Text:=floattostr(mas[2]); form1.Edit15.Text:=floattostr(mas[3]); // Начальный объем form1.Edit3.Text:=floattostr(V0); // Начальное сжатие form1.Edit1.Text:=floattostr(sz); // Колличество пневмопушек form1.Edit5.Text:=floattostr(Vogr); // Координаты второго ловителя form1.Edit6.Text:=floattostr(lvcrd); //Диаметры поршней 1 и 2 form1.Edit2.Text:=floattostr(Dp[1]); form1.Edit4.Text:=floattostr(Dp[2]); end; Я вывесил выше скриншот ошибки. Может быть это подскажет как быть |
#4
|
||||
|
||||
Скорее всего это баг системы, т.к. у меня никаких ошибое не наблюдается.
Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#5
|
|||
|
|||
Ошибка - обращение к неинициализированному объекту.
Смотри, не вызывается ли твоя процедура до создания формы, например. |
#6
|
|||
|
|||
В том то и дело, что процедура начинает работать в первом модуле, до середины прокатывается, а потом сливается. Первый модуль всегда инициализирован - остальные модули модально открываются из первого.
Причем та же самая процедура вызванная сама из себя прекрасно работает. А вот вызванная при оптимизации из пятого модуля - дает сбой. Я бы все понял если бы она не успев начаться такое бы выдавала, но она падает на середине процедуры. Уже говорил чтобы увидеть где она падает - жмите брейкпоинт на этой процедуре и выполните действия запуск-> Флаг "Оптимизация" -> Пар-ры Оптимизации -> Флаг на D1 -> Ограничение справа любое больше ограничения слева -> ok -> то же для D2 -> выполнить оптимизацию Пожалуйста - запустите прогу, чтобы увидеть все воотчию и не строить предположений. Я такой мистики просто не видел никогда и найти где я ошибся тоже не могу в этом случае. |
#7
|
||||
|
||||
программа падает у тебя падает на
Код:
procedure initfigure; .... optar[1].cf:=cfunc(fargum); .... по перваму взгляду там не хватает Код:
SetLength(optar,cop+2); Arrrgh |