Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.08.24;
Скачать: CL | DM;

Вниз

Странности с набором кода   Найти похожие ветки 

 
abhtr   (2008-07-01 15:52) [0]

Обычно, если я в коде (в *.pas файле) набираю название объекта, например Label4, а затем набираю точку, то выпадает список свойств, функций и т.д. И все очень хорошо...
Вернулся к модулю, который уже работает с тем, чтобы добавить еще код.
Набираю: Label4, а внизу выдается сообщение:
"[Pascal Error] Work.pas(1): Unable to invoke Code Completion due to errors in source code"
т.е. вроде бы ошибка в коде. Ищу и не нахожу. Компиляция тоже проходит успешно. Локализовал место, до которого "выпадение свойств" происходит успешно, затем идет какая-то облась, где вообще ничего не выдается, а затем уже попадаю в область, где выдается сообщение об ошибке.
Весь код длинноват, но если нужно покажу...
Подскажите, пожалуйста, в чем может быть дело, и как эту ошибку убрать?


 
Плохиш ©   (2008-07-01 15:57) [1]


> Подскажите, пожалуйста, в чем может быть дело, и как эту
> ошибку убрать?

Подожди, пойду кофея заварю, потом погадаю...


 
Ega23 ©   (2008-07-01 15:59) [2]

Вариантов - масса. Сделай полный билд всей группы проектов - сразу увидишь где.
Либо DCU все потри.


 
Виталик   (2008-07-01 16:09) [3]

Такая ошибка была когда наш админ в колледже Делфи 7 принес.
Студентам в принципе все равно было, а для себя он перешел на Делфи 6 и чепуху такую больше у себя не видел. Д7 вообще недоколыханная.


 
abhtr   (2008-07-01 16:19) [4]


> пойду кофея заварю

Приятного апетита :о)


> Сделай полный билд

Сделал Project->Build All Project.
Но ничего не увидел. Все прошло успешно.

Все файлы *.dcu удалил и скомпиллировал снова.

Я правильно все сделал?  Но все осталось по-прежнему :о(


 
Ega23 ©   (2008-07-01 16:19) [5]


> Д7 вообще недоколыханная.


:) Откровенно говоря, я не знаю более стабильной версии Delphi, чем 5 и 7. А с  учётом того, что пятёрка уже очень сильно устарела....


 
Ega23 ©   (2008-07-01 16:20) [6]


> Но все осталось по-прежнему :о(


А какой проект активный?


 
Anatoly Podgoretsky ©   (2008-07-01 16:25) [7]

> abhtr  (01.07.2008 15:52:00)  [0]

Не надо ее убирать, эта ошибка не влияет на компиляцию.
Но вообще то можешь подождать, пока мы с Плохиш кофе напьемся.


 
abhtr   (2008-07-01 16:27) [8]


> А какой проект активный?

Не совсем понял вопрос. Но у меня открыт тот, в котором и наблюдается указанная странность... Я понимаю, что он и является активным. Или я не правильно понял?


 
abhtr   (2008-07-01 16:32) [9]


> можешь подождать, пока мы с Плохиш кофе напьемся

надеюсь кофе будет удачным :о)


 
Ega23 ©   (2008-07-01 16:43) [10]


> Не совсем понял вопрос. Но у меня открыт тот, в котором
> и наблюдается указанная странность... Я понимаю, что он
> и является активным. Или я не правильно понял?


У тебя один проект открыт, или группа проектов (project group)?


 
abhtr   (2008-07-01 16:45) [11]

Один.


 
Плохиш ©   (2008-07-01 16:45) [12]


> Ega23 ©   (01.07.08 16:43) [10]

Ну чё ты над ним издеваешься?
Хотя, если только телепатор испытываешь, но смотри не спали :-)


 
Ega23 ©   (2008-07-01 16:51) [13]

A Label4 у тебя есть? Я имею ввиду не компонент на форме с Caption="Label4", а именно TLabel с Name="Label4"?


 
abhtr   (2008-07-01 17:35) [14]

Извините, что задержался с ответом. Отвлекли.
Если я правильно понял, никто не хочет на такие "глупые" вопросы отвечать.
Извините, что отнял у Вас время.


 
Ega23 ©   (2008-07-01 17:36) [15]


> Если я правильно понял, никто не хочет на такие "глупые"
> вопросы отвечать.


Ну как знаешь. "Умываю руки".


 
Владимир   (2008-07-04 09:00) [16]

Скорее всего у тебя Дельфа нашла какую-то структуру, нерациональную с ее точки зрения. Например, объявил функцию или переменную и не использовал нигде. Или параметры где-то криво передал и т.д.

Это должно в сообщениях при компиляции отображаться. А если нет такого - значит снеси ее и вновь поставь, а то она когда долго стоит начинает "стареть". :-)


 
Ega23 ©   (2008-07-04 09:20) [17]


> А если нет такого - значит снеси ее и вновь поставь, а то
> она когда долго стоит начинает "стареть". :-)

LMD


 
Anatoly Podgoretsky ©   (2008-07-04 09:29) [18]


> а то она когда долго стоит начинает "стареть". :-)

Это когда долго лежит.


 
abhtr   (2008-07-04 10:22) [19]

За прошедшее время удалось выяснить следующее. Эффект этот имеет место только в одном модуле моего проекта. В других модулях все работает нормально. Более того в "дефектном" модуле этот эффект возникает в процедуре которая выводит отчет в Word, а внутри этой процедуры этот эффект начинается только после цикла
"while not dbgWork.DataSource.DataSet.Eof do…"
причем внутри этого цикла все работает, а после "… end:" перестает.
Как мне приблизительно объяснили, данный эффект может возникать в 2-случаях: либо после кода, в котором используется "позднее связывание", либо если получается "сумеречный" код, который может возникнуть, возможно, от неправильных имен переменных. Например, одинаковое имя для разных переменных.
Переменные я проверил, но ничего подозрительного не нашел.
Вариант с "поздним связыванием" вроде бы лучше объясняет, но непонятно, почему, этот эффект возникает не сразу после использования операторов "позднего связывания", а только "по прошествии" многих строк с "поздним связыванием."
Опять-таки, если надо могу выложить код процедуры, но это более 200 строк, а весь модуль более 2000 строк.


 
Владимир   (2008-07-04 10:56) [20]

Короче, кидай свой проект на vlasavelev@yandex.ru. Только, пожалуйста, в архиве!


 
Anatoly Podgoretsky ©   (2008-07-04 11:26) [21]

> abhtr  (04.07.2008 10:22:19)  [19]

Не с Интернета ли ты брал куски.


 
abhtr   (2008-07-04 16:29) [22]


> Не с Интернета ли ты брал куски.

Да, куски кода брал из статьи опубликованной в интернете. Но в статье не было конструкции while...


 
Anatoly Podgoretsky ©   (2008-07-04 16:44) [23]

> abhtr  (04.07.2008 16:29:22)  [22]

Не важно, при копирование с Сети, некоторые невидимые символы, выглядят как пробел или окончание строки, но приводят к полной или частичное не работоспособности программы. По поведению очень похоже на подобное.


 
abhtr   (2008-07-04 16:49) [24]

О, нет! Я имел ввиду, что я "списывал" код со статьи. А набирал я его руками...
Хотя ...
Попробую перенабрать текст.
Но это уже в понедельник.
Дома, пока, возможности работать нет.


 
Anatoly Podgoretsky ©   (2008-07-04 20:07) [25]

> abhtr  (04.07.2008 16:49:24)  [24]

Изучи подозрительную часть хекс редактором, обращать внимание на наличии пары 13+10 в конце строк и невидимые пробелы.


 
GrayFace ©   (2008-07-05 00:39) [26]

Закомментируй цикл, проверь, раьотает ли, закомментируй часть цикла, проверь и т.д.  В конце концов найдешь проблемный кусочек. У меня уже несколько раз было, что правильный код не компилялся.


 
abhtr   (2008-07-07 12:25) [27]

Совет
> GrayFace

помог выделить строчку, которая дает этот эффект. Это:
            W.Selection.Start := W.Selection.End;            

Пояснения:

var
W :variant;
begin
...
W:=CreateOleObject("Word.Application");

...
            //Перемещаем в конец документа
            W.ActiveDocument.Range.Select;
            W.Selection.Start := W.Selection.End;
...
end;


Слово End компиллятор выделяет жирным, как свою родную команду, но контекст, видимо, интерпретирует двояко. Поэтому и не выдает ошибку при "основной" компиляции, а "после точки" - ошибка.

Подскажите, можно ли как-то обойти эту команду (.End)?


 
savyhinst ©   (2008-07-07 14:44) [28]

Может быть,
Ctrl+Click по слову end, после чего открывается юнит, курсор перемещается на слово End, заменяешь слово end любым бругим словом, пробуешь, если глючит - значит делаешь обратно на слово end...


 
интелллигент   (2008-07-07 14:48) [29]

У меня тоже иногда так бывает. Я просто жму после "label4." ctrl + SPACE и вылазит то самое меню.


 
++vist++ ©   (2008-07-07 16:29) [30]

Все дело в том, что система Delphi не любит когда константы объявляют после переменных!


 
abhtr   (2008-07-07 18:24) [31]


> ++vist++

Попробовал переставить. Ничего не изменилось.
Все восстанавличается только при исключении строчки с .END.
Пробовал заменить на EndOf, но он используется с параметрами, работающими при "позднем связывании"
Selection.EndOf(Unit:=wdParagraph, Extend:=wdExtend)
Так что пока ничего не получается, как только то, что этот код я переместил в конец модуля, чтобы не мешал делать вставки нового кода, до этой строчки.


 
Юрий Зотов ©   (2008-07-08 03:57) [32]

Похоже, End воспринимается парсером IDE (но не компилятором), как ключевое слово языка. Естественно, для него возникает синтаксическая ошибка - отсюда и сообщение.


 
ketmar ©   (2008-07-08 11:08) [33]

потрясающе, сколько сюда понабегало. а по делу один ЮЗ сказал. ну, и я примажусь к верному ответу: у IDE и компилятора парзеры разные. поскольку IDE делали боги, они никак не могли предположить, что их парзер лажанётся. и потому пункт «это не ключевое слово, дура!» в меню не положили. выход простой — плакать и смириться.

---
All Your Base Are Belong to Us


 
Anatoly Podgoretsky ©   (2008-07-08 12:02) [34]

> ketmar  (08.07.2008 11:08:33)  [33]

Писать надо end.
А не наоборот.


 
ketmar ©   (2008-07-08 12:21) [35]

>[34] Anatoly Podgoretsky © (2008-07-08 12:02:00)
да вообще писать не надо, всё уже написано.

---
Understanding is not required. Only obedience.



Страницы: 1 вся ветка

Текущий архив: 2008.08.24;
Скачать: CL | DM;

Наверх




Память: 0.55 MB
Время: 0.023 c
15-1215265054
NaRuTo
2008-07-05 17:37
2008.08.24
IRC


2-1216590932
timekiller
2008-07-21 01:55
2008.08.24
Как выделить строку в TMemo?


8-1184352294
leonidus
2007-07-13 22:44
2008.08.24
Траблы при получении уровня компресии у JPG-файлов


2-1216296405
Igor_34
2008-07-17 16:06
2008.08.24
Имя компьютера


2-1216712194
Оксана Вл.
2008-07-22 11:36
2008.08.24
StringGrid