Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 10.05.2010, 23:02
Melletzar Melletzar вне форума
Прохожий
 
Регистрация: 18.04.2010
Сообщения: 11
Репутация: 10
По умолчанию Просьба о помощи. Полный крах там где его быть не должно.

Народ помогите решить проблему! Писал писал прогу - работала и все было в порядке. Потом чуток ее еще подкорректировал и она теперь падает там, где ну никак упать она не может!

Ошибка такая - здесь скриншот:
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  
Старый 10.05.2010, 23:20
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Выложи проблемное место прямо в форум (у меня на работе не пускают туда, куда ты выложил). Вообще, это может быть либо несовпадение типов, либо чтение из неинициализированных переменных/объектов.
Ответить с цитированием
  #3  
Старый 11.05.2010, 00:32
Melletzar Melletzar вне форума
Прохожий
 
Регистрация: 18.04.2010
Сообщения: 11
Репутация: 10
По умолчанию

Перезалил вот сюда:
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  
Старый 11.05.2010, 03:15
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

Скорее всего это баг системы, т.к. у меня никаких ошибое не наблюдается.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #5  
Старый 11.05.2010, 04:16
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Ошибка - обращение к неинициализированному объекту.
Смотри, не вызывается ли твоя процедура до создания формы, например.
Ответить с цитированием
  #6  
Старый 11.05.2010, 09:03
Melletzar Melletzar вне форума
Прохожий
 
Регистрация: 18.04.2010
Сообщения: 11
Репутация: 10
По умолчанию

В том то и дело, что процедура начинает работать в первом модуле, до середины прокатывается, а потом сливается. Первый модуль всегда инициализирован - остальные модули модально открываются из первого.

Причем та же самая процедура вызванная сама из себя прекрасно работает. А вот вызванная при оптимизации из пятого модуля - дает сбой.

Я бы все понял если бы она не успев начаться такое бы выдавала, но она падает на середине процедуры.

Уже говорил чтобы увидеть где она падает - жмите брейкпоинт на этой процедуре и выполните действия
запуск-> Флаг "Оптимизация" -> Пар-ры Оптимизации ->
Флаг на D1 -> Ограничение справа любое больше ограничения слева -> ok
-> то же для D2 -> выполнить оптимизацию

Пожалуйста - запустите прогу, чтобы увидеть все воотчию и не строить предположений. Я такой мистики просто не видел никогда и найти где я ошибся тоже не могу в этом случае.
Ответить с цитированием
  #7  
Старый 11.05.2010, 13:05
Аватар для urahara
urahara urahara вне форума
Новичок
 
Регистрация: 16.01.2010
Сообщения: 86
Репутация: 35
По умолчанию

программа падает у тебя падает на
Код:
procedure initfigure;
....
  optar[1].cf:=cfunc(fargum);
....
как я понял у тебя просто массив optar нулевой длинны.

по перваму взгляду там не хватает
Код:
SetLength(optar,cop+2);
__________________
Arrrgh
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 08:30.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter