Страница 1 из 1

Unable to invoke Code Completion due to errors in source code

Добавлено: 18 июл 2009, 13:31
MiReQ
C++ Builder 6.0 (Build 10.157)

С определенного момента перестает работать Ctrl+Space, хотя проект компилируется нормально, даже без Warning'ов...

Код: Выделить всё

//...[color="DarkGreen"]
Newproject1->Visible=((nodelevel(TreeView1->Selected)==1)&&(TreeView1->Selected->Text=="Projects"));
Newstory1->Visible=((nodelevel(TreeView1->Selected)==2)[/color]&&[color="DarkRed"](TreeView1->Selected->Parent->Text=="Projects"))||((nodelevel(TreeView1->Selected)==3)&&(TreeView1->Selected->Text=="Stories"));[/color]
//...
Зеленым отмечено место, где Ctrl+Space работает, красным - где уже нет.

Newproject1, Newstory1 - кнопки PopupMenu
nodelevel - моя функция ( int nodelevel(TTreeNode* node); )
TreeView1 - TTreeView*, собственно :)

В чем причина?

Re: Unable to invoke Code Completion due to errors in source code

Добавлено: 18 июл 2009, 13:58
Airhand
Builder вообще часто глючит на этом. Не обращай внимания, главное чтобы прога работала.

Re: Unable to invoke Code Completion due to errors in source code

Добавлено: 18 июл 2009, 14:36
WinMain
TreeView1->Selected->Parent->Text=="Projects"


Свойство Parent должно по идее возвращать указатель на родительский узел дерева. Но если текущая позиция является корневой в дереве, то свойство Parent должнo вернуть нулевой указатель или выдать какое-то сообщение об ошибке.
А в твоём коде производится какая-нибудь проверка указателя на ноль? Судя по всему не производится.

Re: Unable to invoke Code Completion due to errors in source code

Добавлено: 18 июл 2009, 14:47
MiReQ
WinMain писал(а): А в твоём коде производится какая-нибудь проверка указателя на ноль? Судя по всему не производится.
ну, nodelevel, по сути, и проверяет...
на сколько мне известно, if ((cond1)&&(cond2)), если cond1 не выполняется, то cond2 не вычисляется...

/*
nodelevel(node)=-1, если node==NULL
nodelevel(node)=0, если node!=NULL && node->Parent==NULL
...
*/

но, все-равно, сейчас проверю...
--------------------------------------------------------------------------------
Добавлено сообщение
--------------------------------------------------------------------------------
WinMain писал(а): А в твоём коде производится какая-нибудь проверка указателя на ноль? Судя по всему не производится.
Переделал, помогло :) Спасибо.
Но, все-таки мне кажется, что дело было не в этом...

Re: Unable to invoke Code Completion due to errors in source code

Добавлено: 18 июл 2009, 22:29
Romeo
Однозначно дело было не в этом - тебе просто указали возможную ошибку в коде.

То, что высвечивает помощник не относится ни к компиляции, ни, тем более, к runtime. Помощник сам анализирует исходные файлы и часто это делает не совсем корректно.

Как билдер, так и студия частенько глючат на подсказках. В случае студии, как правило, помогает перестройка browse info. Для билдера должно быть что-то похожее.