Форум: "Прочее";
Текущий архив: 2013.05.19;
Скачать: [xml.tar.bz2];
ВнизТо ли лыжи не едут... Найти похожие ветки
← →
Dimka Maslov © (2013-01-11 21:57) [0]Пишу прогу. В проге есть модуль. В модуле куча различных классов. Ввожу ещё один класс. В классе метод. Нажимаю Shift+Ctrl+C. Класс разворачивается в implementation. Всё нормально. Компилирую. Получаю такую ошибку: http://www.daemys.com/f/bug.jpg
Дичь какая-то. Но происходит на двух разных машинах. Причём только если в рамках данного проекта в данном модуле объявлен класс с таким именем. Независимо от предка. Независимо от настроек проекта (он пересоздавался заново). Независимо от расположения относительно других классов и методов. Если класс обозвать по другому - всё работает. Что же это такое делается?
← →
alexdn © (2013-01-11 22:01) [1]Это потому что XP и Delphi 2006 помоему..
← →
Игорь Шевченко © (2013-01-11 22:02) [2]По uses ни с кем не пересекаешься с идентификатором, объявленным с таким же именем ?
← →
Dimka Maslov © (2013-01-11 22:03) [3]2009. И чем этой парочке не нравится TBucklingPlateItem в модуле shprenClasses проекта shpren.plugin?
← →
Dimka Maslov © (2013-01-11 22:04) [4]
> Игорь Шевченко © (11.01.13 22:02) [2]
Нет. Такого имени нигде больше нет.
← →
alexdn © (2013-01-11 22:08) [5]Не едут. Ошибку строчкой выше видел?
← →
Аббат Пиккола (2013-01-11 22:08) [6]Я бы проверил, что я имею в виду, говоря "Если класс обозвать по другому - всё работает":
1. сначала стер бы букву m
TBucklingPlateIte.Proc
2. затем букву e
TBucklingPlateIt.Proc
и так далее.
Можно, конечно, и короче - делением пополам.
Может сдуру в имени класса одна буква русская, к примеру.
← →
Dimka Maslov © (2013-01-11 22:11) [7]
> Не едут. Ошибку строчкой выше видел?
Она вроде как пустая. А выше комментарий. И если переименовать класс то всё работает.
> Аббат Пиккола (11.01.13 22:08) [6]
Пробовал. Реагирует только на такое имя.
← →
Dimka Maslov © (2013-01-11 22:12) [8]
> Может сдуру в имени класса одна буква русская, к примеру.
Хоть греческая. Всё должно работать.
← →
Игорь Шевченко © (2013-01-11 22:13) [9]По uses ни с кем не пересекаешься с идентификатором, объявленным с таким же именем ?
← →
Аббат Пиккола (2013-01-11 22:16) [10]Безумная идея: может dcu-файлы датированы как-то не так, а дата слетела из-за того что XP время опять отыграло на час из-за перевода времени? Может удалить dcu принудительно?
← →
Dimka Maslov © (2013-01-11 22:16) [11]
> По uses ни с кем не пересекаешься с идентификатором, объявленным
> с таким же именем ?
Ни по uses, ни вообще никак. Такого имени нигде больше нет. Специально даже полный поиск по всем pas файлам на диске делал. И даже бы если пересекался, то такого быть не должно.
← →
Аббат Пиккола (2013-01-11 22:17) [12]Если я верно помню, Delphi смотрит на дату и время редактирования файлов при перекомпиляциях
← →
alexdn © (2013-01-11 22:17) [13]> Dimka Maslov © (11.01.13 22:16) [11]
А переименовываешь на что? просто интересно, ну когда работает.
← →
Dimka Maslov © (2013-01-11 22:17) [14]
> Безумная идея: может dcu-файлы датированы как-то не так,
> а дата слетела из-за того что XP время опять отыграло на
> час из-за перевода времени? Может удалить dcu принудительно?
>
Удалялось всё, все настройки проекта (пересоздавался заново), все dcu, все временные файлы. Не помогает. Только переименовать класс. Но хочется разобраться, что за хрень вообще такая.
← →
Dimka Maslov © (2013-01-11 22:19) [15]
> А переименовываешь на что? просто интересно, ну когда работает.
Во что угодно, хоть TBucklingPlateItem_, хоть TBucklingPlate, хоть вообще что.
← →
Аббат Пиккола (2013-01-11 22:19) [16]Пробовал удалить dcu этого модуля?
← →
Dimka Maslov © (2013-01-11 22:20) [17]
> Пробовал удалить dcu этого модуля?
Все dcu проекта
← →
Аббат Пиккола (2013-01-11 22:22) [18]А при помещении этого же класса в другой модуль все работает?
← →
Dimka Maslov © (2013-01-11 22:24) [19]
> А при помещении этого же класса в другой модуль все работает?
Да, работает.
← →
Аббат Пиккола (2013-01-11 22:26) [20]7100 строк... Дубликат объявления точно исключен? Проверял поиском ?
← →
Аббат Пиккола (2013-01-11 22:26) [21]Хотя - нет, на дубюликат было бы другое сообщение...
← →
Dimka Maslov © (2013-01-11 22:26) [22]
> Проверял поиском ?
Дважды по всему компу.
← →
Аббат Пиккола (2013-01-11 22:30) [23]Попробуй создать новый проект, засунуть туда только этот модуль и отклмпилировать
← →
Dimka Maslov © (2013-01-11 22:36) [24]
> Попробуй создать новый проект, засунуть туда только этот
> модуль и отклмпилировать
Только этот модуль вне проекта не живёт. Он от второго модуля сильно зависит. А создавать новый проект с нуля я пробовал на двух компах - симптоматика одинаковая
← →
Dimka Maslov © (2013-01-11 22:37) [25]При этом прыгалка между interface и implementation работает. Проблема только при компиляции возникает.
← →
Игорь Шевченко © (2013-01-11 22:41) [26]
> Дважды по всему компу.
Я бы проверил не только pas файлы но и *.*
← →
Dimka Maslov © (2013-01-11 22:49) [27]
> Я бы проверил не только pas файлы но и *.*
Нет такого файла. Даже если и был, что чисто теоретически, как это может спровоцировать подобное поведение?
← →
Игорь Шевченко © (2013-01-11 22:53) [28]Dimka Maslov © (11.01.13 22:49) [27]
Чисто теоретически с таким именем может быть объявлен не класс в каком-то dcp или dcu
← →
Dimka Maslov © (2013-01-11 22:58) [29]
> Dimka Maslov © (11.01.13 22:49) [27]
Ну даже если и существует такое объявление, как оно должно влиять на данный модуль и почему ошибка тогда не проявляется в другом модуле, имеющем те же зависимости?
← →
брат Птибурдукова (2013-01-11 23:00) [30]было подобное в проекте com-сервера в *_tlb.pas, но тут же явно не та ситуация. Я б предположил, что в Users\...\Rad studio\... лежит вражеская дцуха и планомерное поедает мозг — но автор утверждает, что такого нет.
← →
Аббат Пиккола (2013-01-11 23:03) [31]А если пойти на поводу у этих сообщений и поставить (хоть это и глупо) ";" после имени класса? Как будут выглядеть сообщения?
TBucklingPlateItem;.Proc
← →
Dimka Maslov © (2013-01-11 23:10) [32]
> Аббат Пиккола (11.01.13 23:03) [31]
Лучше не становится. Declatation expected but "." found (что естественно). Если убрать .Proc Unsatisfied forward or external declaration: "TBucklingPlateItem.Proc". Что тоже естественно.
← →
Аббат Пиккола (2013-01-11 23:10) [33]А если вообще удалить реализацию метода, оставив только объявление в интерфейсе? Как будут выглядеть сообщения?
Вообще я сталкивался с подобным поведением, только когда имеется несколько мест с одинаковым объявлением, компилятор пытается использовать один файл, а IDE останавливается на строке в совсем ином файле. Они почему-то работают достаточно "независимо" друг от друга.
← →
Dimka Maslov © (2013-01-11 23:10) [34]
> Аббат Пиккола (11.01.13 23:03) [31]
Лучше не становится. Declatation expected but "." found (что естественно). Если убрать .Proc Unsatisfied forward or external declaration: "TBucklingPlateItem.Proc". Что тоже естественно.
← →
Dimka Maslov © (2013-01-11 23:11) [35]
> А если вообще удалить реализацию метода, оставив только
> объявление в интерфейсе? Как будут выглядеть сообщения?
Unsatisfied естественно будет. И объявляется один раз.
← →
Аббат Пиккола (2013-01-11 23:12) [36]То есть сообщения об ошибках явно изменились...
← →
Dimka Maslov © (2013-01-11 23:15) [37]
> То есть сообщения об ошибках явно изменились...
Причём изменились на абсолютно правильные. Забавно другое. Если методу добавить аргументов, он начинает ругаться ещё и на закрывающую скобку, требуя на её месте точку с запятой. Дичь какая-то.
← →
Аббат Пиккола (2013-01-11 23:16) [38]Ладно, а можно закомментировать все остальные (ну или максимум, сколько возможно) классы в этом модуле?
Разборщик явно путается в begin end, точках и точках с запятой. Есть возможность выбросить остальной код, чтобы он никак не мешал? Да. кстати, а там нет каких-нибудь директив компилятору с ветвлениями? Вроде IFDEF
← →
Аббат Пиккола (2013-01-11 23:20) [39]{$IFDEF}
← →
Dimka Maslov © (2013-01-11 23:21) [40]
> Аббат Пиккола (11.01.13 23:16) [38]
Ветвлений нету. И если бы разборщик путался, он бы путался независимо от имени, и выдавал ошибку в другом месте. Выбрасывать код я тоже пытался (в разумных пределах), а также двигать объявление и реализацию по тексту. Ошибка всегда в одном и том же месте.
Страницы: 1 2 3 вся ветка
Форум: "Прочее";
Текущий архив: 2013.05.19;
Скачать: [xml.tar.bz2];
Память: 0.54 MB
Время: 0.004 c