Вот, в очередной раз.
Но у же сил всё переписывать нет.
С утра ничего не предвещало беды.
Но тут я кинул на форму пару стандартных компонент и получил ошибку при компиляции.
Вышел из лазаруса.
Захожу и получаю вот это:
Жму кнопку и далее:
Делаю OK:
Ну и как с этим бороться?
Об какую стенку биться?
Division by zero
Модератор: Модераторы
- Little_Roo
- энтузиаст
- Сообщения: 639
- Зарегистрирован: 27.02.2009 18:56:36
- Откуда: Санкт-Петербург
sign писал(а):Но тут я кинул на форму пару стандартных компонент
А какие компоненты и какой лазарь ?
9.3.1
FPC, пробовал и 2.4.4 и 2.5.1 без разницы.
Лазаруса и последнего из спаншотов грузил.
В общем, дело то старое. У меня и ранее так же случалось.
Просто кинул на форму из раздела RTTI календарь.
После чего всё рухнуло!
В других случаях другие компоненты вызывали крах, но все были из базовой поставки.
Сейчас я вытащил из архива форму, на которую ругается лазарь при загрузке, заменил, так он новую беду себе нашёл.
Грузиться, всё в порядке.
Компилируется.
Запускаю.
Смотрим 6 скринов.
FPC, пробовал и 2.4.4 и 2.5.1 без разницы.
Лазаруса и последнего из спаншотов грузил.
В общем, дело то старое. У меня и ранее так же случалось.
Просто кинул на форму из раздела RTTI календарь.
После чего всё рухнуло!
В других случаях другие компоненты вызывали крах, но все были из базовой поставки.
Сейчас я вытащил из архива форму, на которую ругается лазарь при загрузке, заменил, так он новую беду себе нашёл.
Грузиться, всё в порядке.
Компилируется.
Запускаю.
Смотрим 6 скринов.
Ну так FPC то тут при чем? В ветке Lazarus и спрашивайте.
Модераторам: Было бы неплохо переместить тему в раздел "Lazarus", не с нуля же там всё это писать..
Алгоритм действий: viewtopic.php?f=5&t=60&start=30#p47524
Обязательно нужно создать тестовый проект с формой и стандартным компонентом, чтобы можно было открыть его и получить на экране то, что у вас на скриншотах.
Если есть время, можно поставить svn и попробовать вычислить, когда был внесён этот баг. Это может помочь вам откатиться на ту ревизию, где этого бага нет, а разработчикам -- понять причину и исправить баг. Алгоритм таков:
1) Обновляемся до trunk (на момент написания данного поста это была ревизия 32060).
2) Пересобираем Lazarus. Проверяем баг. Если нет -- значит уже исправили, если есть -- продолжаем;
4) Предполагаем, что баг могли внести в самой первой ревизии. Тогда подозрительные ревизии -- с 1 по 32060.
3) Ищем середину интервала подозрительных ревизий по формуле
середина = (последняя_подозрительная - первая_подозрительная) div 2.
Например: (32060 - 1) div 2 = 16029.
Обновляемся до этой ревизии. Пересобираем Lazarus.
4) Проверяем баг. Если он есть -- значит он уже был внесён до 16029 или в ней самой, значит подозрительные ревизии -- с 1 по 16029. Если бага нет, значит он был внесён после 16029, значит подозрительные ревизии -- с 16030 по 32060.
5) Если интервал подозрительных ревизий включает больше одной ревизии -- переходим на п.3. Если ровно одну -- мы нашли проблемную ревизию. Сообщаем о ней разработчикам через багтрекер, сами обновляемся до предыдущей ревизии, если это возможно (если она содержит все нужные фичи и не содержит других критических багов).
Основная часть времени уходит на пересборку Lazarus. Если в это время заняться чем-то полезным, то вся процедура не так уж неприятна.
sign писал(а):Ну и как с этим бороться?
Об какую стенку биться?
Алгоритм действий: viewtopic.php?f=5&t=60&start=30#p47524
Обязательно нужно создать тестовый проект с формой и стандартным компонентом, чтобы можно было открыть его и получить на экране то, что у вас на скриншотах.
sign писал(а):В общем, дело то старое. У меня и ранее так же случалось.
Если есть время, можно поставить svn и попробовать вычислить, когда был внесён этот баг. Это может помочь вам откатиться на ту ревизию, где этого бага нет, а разработчикам -- понять причину и исправить баг. Алгоритм таков:
1) Обновляемся до trunk (на момент написания данного поста это была ревизия 32060).
2) Пересобираем Lazarus. Проверяем баг. Если нет -- значит уже исправили, если есть -- продолжаем;
4) Предполагаем, что баг могли внести в самой первой ревизии. Тогда подозрительные ревизии -- с 1 по 32060.
3) Ищем середину интервала подозрительных ревизий по формуле
середина = (последняя_подозрительная - первая_подозрительная) div 2.
Например: (32060 - 1) div 2 = 16029.
Обновляемся до этой ревизии. Пересобираем Lazarus.
4) Проверяем баг. Если он есть -- значит он уже был внесён до 16029 или в ней самой, значит подозрительные ревизии -- с 1 по 16029. Если бага нет, значит он был внесён после 16029, значит подозрительные ревизии -- с 16030 по 32060.
5) Если интервал подозрительных ревизий включает больше одной ревизии -- переходим на п.3. Если ровно одну -- мы нашли проблемную ревизию. Сообщаем о ней разработчикам через багтрекер, сами обновляемся до предыдущей ревизии, если это возможно (если она содержит все нужные фичи и не содержит других критических багов).
Основная часть времени уходит на пересборку Lazarus. Если в это время заняться чем-то полезным, то вся процедура не так уж неприятна.
-
Padre_Mortius
- энтузиаст
- Сообщения: 1265
- Зарегистрирован: 29.05.2007 17:38:07
- Откуда: Спб
Тема перенесена.
По последним скринам стоит просто зайти в файл *.lfm у удалить руками записи на которые ругается Lazarus. Данные свойства скорее всего устарели и были удалены из класса
P.S. и указывайте пожалуйста версию используемого Fpc и Lazarus, иначе определить причину будет практически невозможно
По последним скринам стоит просто зайти в файл *.lfm у удалить руками записи на которые ругается Lazarus. Данные свойства скорее всего устарели и были удалены из класса
P.S. и указывайте пожалуйста версию используемого Fpc и Lazarus, иначе определить причину будет практически невозможно
