Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/43: Рейтинг темы: голосов - 43, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 02.10.2009
Сообщений: 3

C++ Builder 6 - не работает Code Completion в конце больших модулей

02.10.2009, 09:31. Показов 8623. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
При написании программы столкнулся с глюком 6го Билдера - при превышении некоторого размера модуля (у моем случае чуть больше 80 Кб) Code Completion работает только до определенной строки, при редактировании исходов в конце модуля вылетает "Unable to invoke Code Completion due to errors in source code". Все компилируется без проблем, ошибок в коде нет.
Кто-нибудь знает, как победить эту проблему?
Многие пишут, что добавляют новые функции в начало модуля. Это действительно помогает, но что делать, если нужно отредактировать старый код в конце модуля - снова перемещать его вверх?
Я уже вынес все вспомогательные функции (не использующие VCL) в отдельный модуль (с созданием класса), уменьшил модуль на 7 Кб, но и при 75 Кб все равно наблюдаю проблему. Как быть с функциями, которые привязаны к форме? Можно ли разнести функции одного класса на 2 модуля? Если да, был бы очень благодарен за пример, как это сделать.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
02.10.2009, 09:31
Ответы с готовыми решениями:

Ошибка: Unable to invoke Code Completion due to errors in source code
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Menus,...

Code blocks, code completion, opengl
Подскажите пожалуйста можно ли как нибудь в code blocks к code completion подключить opengl из sfml?

Code::blocks code completion , sfml
Я использую sfml функция "code completion" работает со всеми частями sfml. Однако данная функция работает с opengl только в течение одной...

9
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
02.10.2009, 09:41
Palych, ну создай просто Unit и перенеси туда функций побольше... у меня тоже был большой модуль, так он тоже не компилировался, делал, как тебе написал - вынес классов пару-тройку в новый юнит
0
0 / 0 / 0
Регистрация: 02.10.2009
Сообщений: 3
02.10.2009, 10:00  [ТС]
VoodooMan, я просто всегда писал на Дельфе, а сейчас пришлось Билдер осваивать, никогда так с модулями не извращался, поэтому сразу извиняюсь за ламерские вопросы. Если мона, чуть поподробней - мне нужно создать еще один cpp файл, сослаться из него на хидер модуля формы (#include "main.h"), тупо перенести туда половину функций класса формы и в main.cpp прописать #include "main2.h"?
0
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
02.10.2009, 10:10
Palych, понимаете, тут топорно оттяпать не получится, надо глянуть, например, какие функции можно использовать по всему проекту и вынести их в отдельный юнит, а его хидер прописать там, откуда вы их вынесли, тут надо смотреть по коду
1
1 / 1 / 0
Регистрация: 06.10.2009
Сообщений: 12
01.11.2009, 16:26
Столкнулся с подобной проблемой. Не понимаю как правильно вынеси функцию в отдельный модуль. Дело в том, что функция использует глобальные переменные, и отказывается их видеть в отдельном модуле. Спасает конечно объявление этих переменных через extern в новом модуле, но многие не рекомендуют пользоваться внешними переменными. Есть ли вариант без внешних переменных?

Добавлено через 11 минут
эээ поправка. Через экстерн не помогает. Code Completion всё равно не работает.
Может кто нибудь объяснить поподробнее, как подключить модуль(прописывать #include <*.cpp>, или #include <*.h>?), в каком месте прописывать, куда в новом юните прописывать объявление функция (unit.cpp или unit.h), в каком месте (после какой строчки).
На данный момент у меня объявление функций перенесено в Unit1.cpp, а в основном юните прописано #include <Unit1.h>. При этом проект не видит функции. Если прописать в основном юните #include <Unit1.cpp>, то всё возвращается назад (не работает Code Completion). Я совсем запутался.
0
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
01.11.2009, 17:28
какие переменные и функции нужны, такие заголовки и подкючаешь с помощью include (понятное дело, что прототипы функций и описание переменных тоже должно быть в этих заголовках)
0
1 / 1 / 0
Регистрация: 06.10.2009
Сообщений: 12
01.11.2009, 17:38
Пример:
есть переменные
C++
1
2
TCSpinEdit * SpinMem[18];
int UpRate[18],DownRate[18];
есть функции, которые я хочу вынести в отдельный юнит
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
void SetMinSkills (void)
{
  for(int i=0;i!=18;i++)
  {
    SpinMem[i]->MinValue = SpinMem[i]->Value;
  }
}
 
void ControlSE (void)
{
  for(int i=0;i!=18;i++)
  {
    if(SpinMem[i]->Value < 101) UpRate[i] = 1;
    else if(SpinMem[i]->Value < 126) UpRate[i] = 2;
     else if(SpinMem[i]->Value < 151) UpRate[i] = 3;
      else if(SpinMem[i]->Value < 176) UpRate[i] = 4;
       else if(SpinMem[i]->Value < 201) UpRate[i] = 5;
        else UpRate[i] = 6;
 
 
 
    if((SpinMem[i]->Value - SpinMem[i]->Increment) < 101) DownRate[i] = 1;
    else if((SpinMem[i]->Value - SpinMem[i]->Increment) < 126) DownRate[i] = 2;
     else if((SpinMem[i]->Value - SpinMem[i]->Increment) < 151) DownRate[i] = 3;
      else if((SpinMem[i]->Value - SpinMem[i]->Increment) < 176) DownRate[i] = 4;
       else if((SpinMem[i]->Value - SpinMem[i]->Increment) < 201) DownRate[i] = 5;
        else DownRate[i] = 6;
 
 
    if(StrToInt(CalcForm->SkillPoints->Text) < UpRate[i])
    {
      SpinMem[i]->MaxValue = SpinMem[i]->Value;
    }
    else
    {
      SpinMem[i]->MaxValue = 300;
    }
 
    if(SpinMem[i]->MinValue == SpinMem[i]->MaxValue)
     SpinMem[i]->ReadOnly = true;
    else
     SpinMem[i]->ReadOnly = false;
 
  }
}
Если мне просто вынести функции в Unit.2.cpp, и прописать #include <Unit2.h> в первом юните, то ничего не получается. Что мне еще нужно прописать, и где? В каких файлах, и в каком место файлов?
Это именно то место, которое мне непонятно.
0
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
01.11.2009, 17:42
да что сложного-то? просто передавайте переменные в качестве параметров в функции, тогда вам надо будет только подключить хидер файла с функциями, вот и все
0
1 / 1 / 0
Регистрация: 06.10.2009
Сообщений: 12
01.11.2009, 19:01
Цитата Сообщение от Lord_Voodoo Посмотреть сообщение
да что сложного-то? просто передавайте переменные в качестве параметров в функции, тогда вам надо будет только подключить хидер файла с функциями, вот и все
Тогда другой вопрос: как правильно в функцию передать указатель на массив, и как вызывать такую функцию. Как передать массив - знаю. Как передать указатель - знаю. А указатель на массив не получается. Мне просто нужно что б в процессе работы функции изменялся именно глобальный массив.
0
 Аватар для Lelik-pahan
1703 / 899 / 207
Регистрация: 25.11.2009
Сообщений: 1,848
10.12.2011, 10:47
Тема очень старая, но актуальная, так что отпишусь...

Бывает, что в большом проекте Code Completion перестаёт работать начиная с n-ой строки.
Тут помогает отключение некоторых warningов:
Project->Options, вкладка Compiler, кнопка Warnings.
Отключаем W8004 и W8057.
После этого должно работать.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
10.12.2011, 10:47
Помогаю со студенческими работами здесь

Как понять ошибку: "Unable to invoke Code Completion due to errors in source code"
Неподскажите что означает эта надпись????:)) Unit1.cpp(1): Unable to invoke Code Completion due to errors in source code

Code completion delphi 2010
скинул проект с работы думал дома поработать но заметил что перестал работать code completion, создаю пустой проект все пашет, копирую...

Этот скрипт работает на конце странице. Как сделать чтобы работал на конце DIVа?
&lt;script&gt; $(document).ready(function(){ $(window).scroll(function(){ var position = $(window).scrollTop(); var bottom =...

Почему данный код работает в builder 6 а в builder 10 не работает?
SetWindowLong(Handle, GWL_EXSTYLE, GetWindowLong(Handle, GWL_EXSTYLE) | WS_EX_LAYERED); SetLayeredWindowAttributes(Handle, 0, 128,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит токи на L и напряжения на C в установ. режимах до и. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru