Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Глюки компиляторов и IDE в Delphi  (Прочитано 8895 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Basurman
Опытный

ru
Offline Offline
Пол: Мужской

« : 07-06-2008 14:03 » 

Вопрос такой: с какими глюками компиляторов и IDE приходилось сталкиваться, и как удалось решить проблемы?
Конечно в 99% случаев виноват криво написанный код, но иногда...
Конкретная проблема, при использовании Delphi 2005.
В один прекрасный момент, после перезагрузки Delphi (достаточно завершить работу Delphi и запустить снова, без перезагрузки ОС) - перестаёт нормально восприниматься один из
модулей проекта. При этом смысл диагностического сообщения примерно такой: В модуле ХХХ, вместо ключевого слова UNIT обнаружена неизвестная целочисленная константа.
Что бы это значило, и как это исправить?
Дополнительная информация:
Отказ винта (ошибки при чтении) - исключён, проект для проверки перемещался на другой физический винт.
Текст модуля содержит только определения констант.
Раньше было подозрение, что IDE не дружит с комментариями и проблема решалась удалением комментариев, но в данном случае в проекте комментарии вообще отсутствуют.
При просмотре "виноватого" файла в Hex-редакторе - всё на месте и ничего лишнего.
Записан
Basurman
Опытный

ru
Offline Offline
Пол: Мужской

« Ответ #1 : 07-06-2008 23:17 » 

Могу добавить, что строка:
  WndName = 'Заготовка программы'
не вызывает отрицательной реакции у IDE, замена же этой строки на:
  WndName = 'Прототип приложения'
приводит к вышеописываемой реакции.
Если удалить файл с таким глюком из проекта, оставив ссылку на него в разделах uses модулей - то всё прекрасно. Ошибки пропадают, проект компилируется.
Вот только этот модуль, при необходимости, править в блокноте приходится - что не есть хорошо.
Записан
zubr
Гость
« Ответ #2 : 08-06-2008 06:28 » new

Basurman, сторонние компоненты устанавливал какие нибудь? Дело в том, что в Delphi есть интерфейсы позволяющие перехватывать сами действия IDE. И если какой либо сторонний компонент их использует некорректно - вполне могут быть такие глюки.
Записан
Basurman
Опытный

ru
Offline Offline
Пол: Мужской

« Ответ #3 : 08-06-2008 14:06 » 

Сторонних компонентов не устанавливал.
Это глюк именно IDE. В Delphi 5, на другом аппарате естественно, - эти же файлы нормально обрабатываются.
Записан
DrGluck
Постоялец

ru
Offline Offline
Пол: Мужской

« Ответ #4 : 10-06-2008 04:53 » 

Я когдато мучился с Keil, который упорно компилил неправильно проект на ассемблере. Я мучился несколько дней. Перепробовал все ключи компилятора/линковщика. В итоге выяснилось, что каким то образом в конце некоторых строк появлялось не $0D, $0A, а просто $0D (притом регулярно, и у разных строк). В результате такая строка пропускалась при компиляции.
Это я к тому, что может посмотреть в виде HEX на твой модуль?
Записан

Good user - dead user
Basurman
Опытный

ru
Offline Offline
Пол: Мужской

« Ответ #5 : 10-06-2008 14:41 » 

DrGluck, насчёт HEX-просмотра упомянул в самом начале. К тому же эти-же файлы нормально воспринимаются другой версией Delphi.
Вообще это глюк именно Delphi 2005 IDE, на дух не переносящей некоторых буквосочетаний.
Это конечно не смертельно, но весьма неудобно.
К счастью все эти файлы не содержат элементов из VCL. Поэтому их можно исключить из проекта, оставив ссылки на них в разделах USES - там, где это требуется.
Вот только редактировать их приходится не в среде Delphi IDE, а например в блокноте.
Записан
Basurman
Опытный

ru
Offline Offline
Пол: Мужской

« Ответ #6 : 23-08-2008 09:06 » 

Итак, в конце концов, выяснилось:
IDE Delphi 2005 неадекватно реагирует на появление символов национального алфавита (неанглийского - в нашем случае русского) в разделе INTERFACE модуля.
Появление этих же символов в разделе IMPLEMENTATION отрицательной реакции не вызывает.
Кстати даже комментарии на английском в разделе INTERFACE, могут привести к тому, что IDE (именно IDE, а не компилятор) перестанет нормально воспринимать текст модуля.
Приходится поступать следующим образом:
Все комментарии даются только в разделе IMPLEMENTATION.
Определения констант выносятся во включаемый файл, в модуле даётся ссылка INCLUDE CONSTFILE.INC (это пример).
Записан
Modanno
Участник

ru
Offline Offline

« Ответ #7 : 26-08-2008 13:10 » 

Вообще-то этого следует избегать, на мой взгляд. Лучше писать по-английски.
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines