Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2008.08.24;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.54 MB
Время: 0.06 c
15-1215533480
Украинец
2008-07-08 20:11
2008.08.24
А к какому типу относится язык програмирования у инопланентян?


2-1216296933
Dmitry87
2008-07-17 16:15
2008.08.24
Быстродействие алгоритмов


15-1215183486
Хохол
2008-07-04 18:58
2008.08.24
Пятничный флуд: Большой адронный коллайдер


6-1192557976
Rembo
2007-10-16 22:06
2008.08.24
TIdIcmpClient количество посланных байт


2-1216369728
Сергей
2008-07-18 12:28
2008.08.24
Как в DBGrid отменить выделение ячеек?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский