Ambiguity between ‘Windows’
, помогите разобраться
- Подписаться на тему
- Сообщить другу
- Скачать/распечатать тему
|
|
Допустим, у меня есть 3 формы. На формах 1 и 2 есть компоненты TWordApplication. Я создаю коды для работы с Вордом на этих формах, работаю с таблицами и все прекрасно работает. На форме 3 мне тоже нужно работать с Вордом. Я подумала, а зачем мне плодить компонент, когда могу сослаться на тот, который уже есть на форме 1. Так и сделала. Все работает. Цитата [C++ Error] ComCtrls.hpp(2638): E2015 Ambiguity between ‘Windows’ and ‘Word_2k::Windows’ и куча библиотек, где якобы я должна исправить Windows на ‘Word_2k::Windows’. Но во первых, править библиотеку нежелательно, а во-вторых, например, такой вариант ‘Word_2k::Windows::Dialogs выдает ошибку (это единичный пример, а их множество). |
Chow |
|
Попробовать поменять местами порядок инклудов в юните. |
laifik |
|
Цитата Chow @ Попробовать поменять местами порядок инклудов в юните.
А каких конкретно инклюдов? |
Chow |
|
Ну ведь что-бы видеть на второй форме компоненту TWordApplication, которая на первой форме нужно подключить во второй форме хидер первой формы. _Наверное_ во второй форме кроме этого инклуда стоят еще какие-то. Иак вот: попробуй сделать так, что-бы инклуд хидера формы где TWordApplication стоял последний в списке, и в h-файле что-бы #include «Word_2K_SRVR.h» тоже был в конце. |
laifik |
|
Я попробую поварьировать. Пока не получается. |
Bas |
|
Явно указать откуда вызываеться ф-ция. |
Adil |
|
В *.h второй формы можно вообще не подключать «Word_2K_SRVR.h», а только в срр подключить h-файл первой формы. |
Chow |
|
Цитата Adil @ В *.h второй формы можно вообще не подключать «Word_2K_SRVR.h», а только в срр подключить h-файл первой формы.
Да что тут гадать. |
laifik |
|
Цитата Adil @ В *.h второй формы можно вообще не подключать «Word_2K_SRVR.h», а только в срр подключить h-файл первой формы. Да я так и делаю. -юсртыхэю Цитата Chow @ Цитата Adil @ В *.h второй формы можно вообще не подключать «Word_2K_SRVR.h», а только в срр подключить h-файл первой формы.
Да что тут гадать. Да я эту просьбу встретила без энтузиазма. Код то большой. Что конкретно от меня нужно? Только то, что связано с Вордом? -юсртыхэю Цитата Bas @ Явно указать откуда вызываеться ф-ция.
А как это сделать? Я, наверное, не знаю… |
laifik |
|
Цитата Chow @ Ну ведь что-бы видеть на второй форме компоненту TWordApplication, которая на первой форме нужно подключить во второй форме хидер первой формы. _Наверное_ во второй форме кроме этого инклуда стоят еще какие-то. Иак вот: попробуй сделать так, что-бы инклуд хидера формы где TWordApplication стоял последний в списке, и в h-файле что-бы #include «Word_2K_SRVR.h» тоже был в конце.
Увы… |
Bas |
|
Цитата laifik @ Что конкретно от меня нужно? Строку где возникает ошибка , и текст ошибки. |
laifik |
|
Цитата Bas @ Строку где возникает ошибка , и текст ошибки. В самом коде никакой ошибки нет. А выдается перечень стандартных библиотек Билдера такого плана. Например Цитата [C++ Error] FileCtrl.hpp(70): E2015 Ambiguity between ‘Windows’ and ‘Word_2k::Windows’ Выхожу на строку Цитата virtual void __fastcall DrawItem(int Index, const Types::TRect &Rect, Windows::TOwnerDrawState State); Цитата [C++ Error] RXCtrls.hpp(297): E2015 Ambiguity between ‘Windows’ and ‘Word_2k::Windows’ — на строку Цитата virtual void __fastcall DrawItem(int Index, const Types::TRect &Rect, Windows::TOwnerDrawState State); или Цитата [C++ Error] VCLUtils.hpp(118): E2015 Ambiguity between ‘Dialogs’ and ‘Word_2k::Dialogs’ — на строку Цитата extern PACKAGE Word __fastcall MsgDlg(const AnsiString Msg, Dialogs::TMsgDlgType AType, Dialogs::TMsgDlgButtons AButtons, int HelpCtx);
Перечень ошибок не маленький. Как только компонент TWordApplication возвращаю на форму, ошибки исчезают. Сообщение отредактировано: laifik — |
Adil |
|
Обычно прописывается соответствующий компоненту заголовочный файл в *.h-файле формы |
Chow |
|
М-м… #include «Word_2K_SRVR.h»
есть в каком-то из модулей? #include «Form1_.h» тоже поставь в самый конец списка инклудов на каждом из юнитов. Добавлено Цитата laifik @ Но стоит мне только кинуть компонент на новую форму, а потом его убрать, как сразу лезут ошибки. Как- будто где-то что-то прописалось.
Да не «как-будто», а таки прописалось. |
laifik |
|
Цитата Adil @ Обычно прописывается соответствующий компоненту заголовочный файл в *.h-файле формы Да нет. Я отслеживаю, чтобы заголовочный файл отсутствовал. Я имела ввиду какую-то скрытую прописку. Цитата Да не «как-будто», а таки прописалось. То, что очевидно, я вижу. Есть какой-то скрытый момент, в котором хочу разобраться. Цитата Блин, laifik, вы уже не первый год «программируете» но не перестаете меня удивлять своей…
Я бы не взяла на себя смелость кого-то осуждать. Вы ведь не знаете, сколько, какой сложности и что я сделала за это время. Бывают моменты, которые сразу не доходят. Это происходит от недостатка информации. Вот когда по крупицам ее соберу, вопрос «ляжет» сам собою. |
Adil |
|
Никакой скрытой прописки нет. Цитата [C++ Error] FileCtrl.hpp(70): E2015 Ambiguity between ‘Windows’ and ‘Word_2k::Windows’ Видно, что при компиляции в тот момент, когда обрабатывается подключаемый FileCtrl.hpp (не обязательно явно подключаемый, скорее всего через другии hpp), компилятор уже «прошелся» по какому-то из «офисных» заголвочных файлов. Так что всё-таки повнимательней проверьте порядок подключения. #pragma message «Befor vcl.h» #include <vcl.h> #pragma message «After vcl.h» и по появляющимся сообщениям (надо еще поставить галку у «Show general messages» в опциях проекта, вкладка «Compiliеr», правый нижний угол) отследить порядок подключения. |
laifik |
|
Спасибо. Это уже существенно. |
laifik |
|
Как выяснилось, в этом вопросе у меня пробел. Никогда не задумывалась о порядке подключения инклюдов. Добавляла компонент — прописывала библиотеку. Сделала огромную программу и ни разу не было двойственности в связи с подключением. Если бы не захотела удалить компонент, то и вопроса не возникло бы. #ifndef MenuFormH #define MenuFormH //————————————————————————— #include <Buttons.hpp> #include <StdCtrls.hpp> #include <Forms.hpp> #include <Controls.hpp> #include <Classes.hpp> #include <math.h> #include <ComCtrls.hpp> #include «glBevel.hpp» #include «glLabel.hpp» #include <ExtCtrls.hpp> #include <Graphics.hpp> #include <ImgList.hpp> #include <OleServer.hpp> #include <ToolWin.hpp> #include <ExtCtrls.hpp> #include <DBCtrls.hpp> #include <Menus.hpp> #include «glLabel.hpp» #include «glBevel.hpp» #include <ImgList.hpp> #include «PrViewEh.hpp» #include «Word_2K_SRVR.h» В новой: #include <Classes.hpp> #include <Controls.hpp> #include <StdCtrls.hpp> #include <Forms.hpp> #include <ADODB.hpp> #include <ComCtrls.hpp> #include <DB.hpp> #include <Dialogs.hpp> #include <ImgList.hpp> #include <Menus.hpp> #include <ComCtrls.hpp> //TPageControl #include <Buttons.hpp> //TSpeedButton #include «DBGridEh.hpp» //TDBGridEh
Пока и с Вордом не работаю. Но как только прописываю библиотеку DBGridEh.hpp, сразу появляется двойственность. Включительно по Buttons.hpp двойственности нет. #pragma message «Befor vcl.h» #include <vcl.h> #pragma message «After vcl.h» мне ничего не дала, все подключила, а сообщений нет. Может дадите ссылку, где об этом можно почитать? |
Adil |
|
Цитата laifik @ Но как только прописываю библиотеку DBGridEh.hpp, сразу появляется двойственность У меня компилируется без ошибок. Цитата laifik @ Может дадите ссылку, где об этом можно почитать? В хэлпе билдера, индекс — pragma Цитата Adil @ надо еще поставить галку у «Show general messages» в опциях проекта, вкладка «Compiliеr», правый нижний угол ? |
0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
0 пользователей:
- Предыдущая тема
- Borland C++ Builder/Turbo C++ Explorer
- Следующая тема
[ Script execution time: 0,0810 ] [ 16 queries used ] [ Generated: 9.10.23, 03:38 GMT ]
Форум программистов Vingrad
Поиск: |
|
Опции темы |
SAnatoliy |
|
||
Шустрый Профиль Репутация: нет
|
В Builder 5.0 все компилируется и работает. Вот на эти строки: Что мне надо сделать чтоб все нормально компилировалось? |
||
|
|||
mrbrooks |
|
||
трололомен Профиль
Репутация: 167
|
определиться с namespace |
||
|
|||
SAnatoliy |
|
||
Шустрый Профиль Репутация: нет
|
Простите. А можно подробней, а если не трудно примером по моему случаю. |
||
|
|||
oldcode |
|
||||||||
Шустрый Профиль Репутация: 0
|
Вот это
попробуйте так:
или так
|
||||||||
|
|||||||||
SAnatoliy |
|
||
Шустрый Профиль Репутация: нет
|
Все решил с этой проблемой. Всем спасибо. Просто переставил #include «Word_2K_SRVR.h» в конец данного списка подключений. |
||
|
|||
oldcode |
|
||
Шустрый Профиль Репутация: 0
|
увы, проблему это не решило |
||
|
|||
SAnatoliy |
|
||
Шустрый Профиль Репутация: нет
|
возможно, но при компилировании ошибка ушла. P.S. |
||
|
|||
|
Правила форума «С++ Builder» | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) |
0 Пользователей: |
« Предыдущая тема | C++ Builder | Следующая тема » |
MurCode
- Форумы
- Поиск
- О проекте
_Andrew_N
Дата: 28.02.2008 17:07:32
В BCB6 пытаюсь использовать компонент TExcelApplication c закладки Office2k, но после добавления его на форму получаю кучу ошибок:
[C++ Error] ComCtrls.hpp(2638): E2015 Ambiguity between ‘Windows’ and ‘Excel_2k::Windows’
[C++ Error] ComCtrls.hpp(2839): E2015 Ambiguity between ‘Windows’ and ‘Excel_2k::Windows’
[C++ Error] ComCtrls.hpp(3430): E2015 Ambiguity between ‘Menus’ and ‘Excel_2k::Menus’
[C++ Error] ComCtrls.hpp(3431): E2015 Ambiguity between ‘Menus’ and ‘Excel_2k::Menus’
[C++ Error] ComCtrls.hpp(3435): E2015 Ambiguity between ‘Menus’ and ‘Excel_2k::Menus’
[C++ Error] ComCtrls.hpp(3477): E2015 Ambiguity between ‘Menus’ and ‘Excel_2k::Menus’
[C++ Error] ComCtrls.hpp(3577): E2015 Ambiguity between ‘Menus’ and ‘Excel_2k::Menus’
[C++ Error] ComCtrls.hpp(3640): E2015 Ambiguity between ‘Menus’ and ‘Excel_2k::Menus’
[C++ Error] ComCtrls.hpp(3641): E2015 Ambiguity between ‘Menus’ and ‘Excel_2k::Menus’
[C++ Error] ComCtrls.hpp(3652): E2015 Ambiguity between ‘Menus’ and ‘Excel_2k::Menus’
[C++ Error] ComCtrls.hpp(3657): E2015 Ambiguity between ‘Menus’ and ‘Excel_2k::Menus’
[C++ Error] ComCtrls.hpp(3699): E2015 Ambiguity between ‘Menus’ and ‘Excel_2k::Menus’
[C++ Error] ComCtrls.hpp(3706): E2015 Ambiguity between ‘Menus’ and ‘Excel_2k::Menus’
[C++ Error] ComCtrls.hpp(4140): E2015 Ambiguity between ‘Windows’ and ‘Excel_2k::Windows’
[C++ Error] ComCtrls.hpp(4259): E2015 Ambiguity between ‘Windows’ and ‘Excel_2k::Windows’
[C++ Error] ComCtrls.hpp(4429): E2015 Ambiguity between ‘Windows’ and ‘Excel_2k::Windows’
подскажите с чем это может быть связано и как с этим бороться.
P.S. Задача стоит в том, чтобы из программы отследить события в приложении Excel, поэтому хотелось использовать этот компонент (посмотрел его события, заманчиво). Если это можно сделать как-то иначе, посоветуйте pls.
_Andrew_N
Дата: 28.02.2008 17:59:33
собственно уже нашел решение тут
_Andrew_N
Дата: 05.03.2008 13:36:23
В процессе работы с компонентом возникла новая проблема. Невозможно отсоединиться от Excel не закрывая его. При закрытии соединения, приложение Excel тоже закрывается, а пользователь должен иметь возможность дальше работать с Excel. Нашел описание этой проблемы для Delphi тут:
В начале поставил.XL.AutoQuit := False; а было у меня true/ И в конце прописал ExcelApplication1.UserControl := True; ExcelApplication1.Disconnect; FreeAndNil(ExcelApplication1);
Переделал это под С++, но что-то не помогло. Делаю так:
//подключение ExcelApplication1->Connect(); //закрытие подключения ExcelApplication1->set_UserControl(true); ExcelApplication1->Disconnect();
В результате вместе с подключением закрывается и сам Excel.
Подскажите что я неправильно делаю, как отсоединиться от Excel не закрывая его.
P.S. Господа, выручайте, уже мозги плавяться, перерыл весь инет и так и не нашел решения этой проблемы.
izekia
Дата: 05.03.2008 13:42:25
а в чем задача?
есть необходимость использования TExcel?
_Andrew_N
Дата: 05.03.2008 14:06:10
Собственно задача уже описана в первом посте. Если более подробно, то задумка такая:
-в Excel выделяется диапазон ячеек с данными
-программа подсоединяться к Excel, считывает данные, на их основе делает расчет
-далее просит пользователя указать диапазон ячеек в Excel для выведения результата и соответственно выводит туда результат (на подобие как в функциях Excel имеется возможность указать диапазон ячеек)
TExcelApplication использую чтобы отловить событие в Excel — изменение выделеного диапазона, т.е. SheetSelectionChange, и узнать куда выводить результат расчета.
Все задачи кроме последней можна сделать (и они уже сделаны) через OLE, скажем, если заранее известно куда выводить результат или выводить его в новый лист, то проблем нет, а вот в обратном случае? Если задачу можно решить иначе — жду советов.
izekia
Дата: 05.03.2008 14:42:54
посмотрите здесь и здесь
основные идеи такие, просто возможно более громоздко, но с другой стороны дает больше контроля
если не беспокоит зависимость от версии, то можно импортировать библиотеку типов, что значительно сократит объем кода.
В общем почитать можно здесь, а так же здесь
будут вопросы — пишите
_Andrew_N
Дата: 07.03.2008 13:55:58
to izekia, спасибо за оперативность и содержательность,
посмотрел ссылки, как-то сложновато как для моего уровня, к тому же все примеры под Visual C++. Может у кого-то есть примеры или ссылки как это можно реализовать в С++ Builder?
И все-таки остается вопрос, можно ли реализовать задачу с компонентом TExcelApplication?
Ex_Soft
Дата: 07.03.2008 14:46:09
тынць
_________________
«Helo, word!» — 17 errors 56 warnings
Posted via ActualForum NNTP Server 1.4
_Andrew_N
Дата: 07.03.2008 16:02:31
to Ex_Soft: спасибо большое, разобрался, эта ссылка то что надо. Удивляюсь как это я сам этот форум не нашел.
to all: проблема была в следующем (цитата)
Если вы посмотрите в исходники (excel_2k_srvr.cpp) метода TExcelApplication::Disconnect то увидите там соответствующую ошибку. Можно просто поправить код: Код: void __fastcall TExcelApplication::Disconnect() { if (m_DefaultIntf) { // original code (borland bug :( ) //Quit(); // end of original code // this code added by Bob Ballantyne advice if (FAutoQuit) Quit(); // end addition if (ServerData->EventIID != GUID_NULL) DisconnectEvents(GetDunk()); m_DefaultIntf.Reset(); } } и подсоеденить файл к проекту.
что я и сделал, и в результате действительно все заработало.
playmaker86
Дата: 15.04.2011 06:44:29
Не помогло (
Файл excel_2k_srvr.cpp откорректировал и добавил в проект (кнопочка +).
Код такой.
App->Connect();
…
App->Workbooks->Add(file_name, 0);
Book->ConnectTo(App->ActiveWorkbook);
…
Book->SaveAs(save_file_name,
EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam,
xlNoChange,
EmptyParam, EmptyParam, EmptyParam, EmptyParam,
0);
App->set_Visible(true, true);
App->set_UserControl(true);
App->Disconnect();
P.S. Win7, MS Excel 2010.
При составлении строителя C ++ есть ошибка
[C++ Error] LMDCustomButton.hpp(49): E2015 Ambiguity between ‘Menus’ and ‘Excel_2k::Menus’
Решение:
На рисунке показано:
Изменить на:
Интеллектуальная рекомендация
C ++ Компиляция ошибка C2365
Как только мы сказали, что определение, как правило, является правлением функций или переменных. Сегодня я столкнулся с новым типом переписывания ERRORC2365 ошибка компиляции: \ deriveexclude \ derive…
C ++ Ошибка ошибки компиляции: C4996
описание проблемы C ++ Напишите программу Socket Server, при привязке вложенных символов Ошибка программы: error C4996: ‘inet_addr’: Use inet_pton() or InetPton() instead or define _WINSOCK_DEPRECATED…
Вам также может понравиться
C ++ реализует неоднозначный алгоритм схемы
1, одноизонный, кратчайший путь алгоритма N процессоры, первый процессор хочет вещательные сообщения всем другим процессорам, насколько самое кратчайшее время (начиная с первой точки, ищет максимальну…
Внешний C в C ++ и ошибка компиляции
Основная роль внешней «C» состоит в том, чтобы правильно реализовать код C ++, вызывая другой код языка C. После внешнего «c» компилятор будет указывать, что компилятор компиля…
Обзор распределенной файловой системы GlusterFS
Каталог блогов Один, обзор GlusterFS 1. Особенности GlusterFS 2. Терминология GlusterFS 3. Модульная многоуровневая архитектура Во-вторых, принцип работы GlusterFS 1. Рабочий процесс GlusterFS 2. Элас…
BCB compilation appears [C++ Error] LMDCustomButton.hpp(49): E2015 Ambiguity between’Menus’ and’Excel_2k::Menus’
C++ Builder error when compiling
[C++ Error] LMDCustomButton.hpp(49): E2015 Ambiguity between ‘Menus’ and ‘Excel_2k::Menus’
Solution:
will show:
To:
Intelligent Recommendation
C: System () error appears
The wrong report is H: 1: Syntax error: Word UNEXPECTED (Expecting «)) Code FBAKPATH is found by printing(null)config.ini It turned out that FBAKPATH was also spliced by the string through Spri…
More Recommendation
Remember a C compilation error
Error message: error C2143: syntax error : missing ‘;’ before ‘type’ code show as below: The code should be ok, the xcode on the mac tried normal, indicating the problem of the compilation environment…