Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 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
15-1358139887
RDen
2013-01-14 09:04
2013.05.19
star wars ))


2-1349694081
гия
2012-10-08 15:01
2013.05.19
ShortDateFormat переменная


15-1358139314
Дмитрий С
2013-01-14 08:55
2013.05.19
Пространства между строками.


15-1358278961
DevilDevil
2013-01-15 23:42
2013.05.19
Статья по Ribbon в ExpressBars(DevExpress)


15-1358003444
MonoLife
2013-01-12 19:10
2013.05.19
Перевести на C++





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский