Ambiguity between windows and excel 2k windows

>
Ambiguity between ‘Windows’
, помогите разобраться

  • Подписаться на тему
  • Сообщить другу
  • Скачать/распечатать тему

  


Сообщ.
#1

,

    Допустим, у меня есть 3 формы. На формах 1 и 2 есть компоненты TWordApplication. Я создаю коды для работы с Вордом на этих формах, работаю с таблицами и все прекрасно работает. На форме 3 мне тоже нужно работать с Вордом. Я подумала, а зачем мне плодить компонент, когда могу сослаться на тот, который уже есть на форме 1. Так и сделала. Все работает.
    Потом я подумала, а зачем мне тогда тот же компонент на 2 форме. Я его уберу, а сделаю ссылку для Application на форму 1 (ну как в форме 3). Но не тут то было. Появилось огромное количество сообщений типа

    Цитата

    [C++ Error] ComCtrls.hpp(2638): E2015 Ambiguity between ‘Windows’ and ‘Word_2k::Windows’
    [C++ Error] ComCtrls.hpp(3706): E2015 Ambiguity between ‘Menus’ and ‘Word_2k::Menus’

    и куча библиотек, где якобы я должна исправить Windows на ‘Word_2k::Windows’. Но во первых, править библиотеку нежелательно, а во-вторых, например, такой вариант ‘Word_2k::Windows::Dialogs выдает ошибку (это единичный пример, а их множество).
    Когда компонент TWordApplication возвратила на форму 2 и убрала ссылку, все заработало.
    Кто мне может объяснить, что это за фигня такая? :ph34r:

    Master

    Chow



    Сообщ.
    #2

    ,

      Попробовать поменять местами порядок инклудов в юните.
      Для более точного ответа надо видеть код.


      laifik



      Сообщ.
      #3

      ,

        Цитата Chow @

        Попробовать поменять местами порядок инклудов в юните.
        Для более точного ответа надо видеть код.

        А каких конкретно инклюдов?
        И код какой представить? Где библиотеки прописаны?

        Master

        Chow



        Сообщ.
        #4

        ,

          Ну ведь что-бы видеть на второй форме компоненту TWordApplication, которая на первой форме нужно подключить во второй форме хидер первой формы. _Наверное_ во второй форме кроме этого инклуда стоят еще какие-то. Иак вот: попробуй сделать так, что-бы инклуд хидера формы где TWordApplication стоял последний в списке, и в h-файле что-бы #include «Word_2K_SRVR.h» тоже был в конце.


          laifik



          Сообщ.
          #5

          ,

            Я попробую поварьировать. Пока не получается.

            Wizard

            Bas



            Сообщ.
            #6

            ,

              Явно указать откуда вызываеться ф-ция.


              Adil



              Сообщ.
              #7

              ,

                В *.h второй формы можно вообще не подключать «Word_2K_SRVR.h», а только в срр подключить h-файл первой формы.

                Master

                Chow



                Сообщ.
                #8

                ,

                  Цитата Adil @

                  В *.h второй формы можно вообще не подключать «Word_2K_SRVR.h», а только в срр подключить h-файл первой формы.

                  Да что тут гадать. :) Тут код надо видеть.


                  laifik



                  Сообщ.
                  #9

                  ,

                    Цитата Adil @

                    В *.h второй формы можно вообще не подключать «Word_2K_SRVR.h», а только в срр подключить h-файл первой формы.

                    Да я так и делаю.

                    -юсртыхэю

                    Цитата Chow @

                    Цитата Adil @

                    В *.h второй формы можно вообще не подключать «Word_2K_SRVR.h», а только в срр подключить h-файл первой формы.

                    Да что тут гадать. :) Тут код надо видеть.

                    Да я эту просьбу встретила без энтузиазма. Код то большой. Что конкретно от меня нужно? Только то, что связано с Вордом?

                    -юсртыхэю

                    Цитата Bas @

                    Явно указать откуда вызываеться ф-ция.

                    А как это сделать? Я, наверное, не знаю… :unsure:


                    laifik



                    Сообщ.
                    #10

                    ,

                      Цитата Chow @

                      Ну ведь что-бы видеть на второй форме компоненту TWordApplication, которая на первой форме нужно подключить во второй форме хидер первой формы. _Наверное_ во второй форме кроме этого инклуда стоят еще какие-то. Иак вот: попробуй сделать так, что-бы инклуд хидера формы где TWordApplication стоял последний в списке, и в h-файле что-бы #include «Word_2K_SRVR.h» тоже был в конце.

                      Увы… :'( Это не помогло. Даже удивительно, что есть ссылка на библиотеку RXCtrl.hpp, хотя ни в одной из этих форм компоненты быблиотеки не использованы. В других есть, но они то причем?

                      Wizard

                      Bas



                      Сообщ.
                      #11

                      ,

                        Цитата laifik @

                        Что конкретно от меня нужно?

                        Строку где возникает ошибка , и текст ошибки.


                        laifik



                        Сообщ.
                        #12

                        ,

                          Цитата 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 возвращаю на форму, ошибки исчезают.
                          И еще один момент. Допустим, компонент у меня есть на форме 1. Создаю новую форму, делаю ссылку на форму 1, где прописана библиотека Ворда, работаю на новой форме с компонентом. И все работает. Но стоит мне только кинуть компонент на новую форму, а потом его убрать, как сразу лезут ошибки. Как- будто где-то что-то прописалось.

                          Сообщение отредактировано: laifik


                          Adil



                          Сообщ.
                          #13

                          ,

                            Обычно прописывается соответствующий компоненту заголовочный файл в *.h-файле формы

                            Master

                            Chow



                            Сообщ.
                            #14

                            ,

                              М-м…
                              Так, еще раз по порядку:
                              1. Строчка:

                              ExpandedWrap disabled

                                #include «Word_2K_SRVR.h»

                              есть в каком-то из модулей?
                              2. Если есть (а она должна быть в той форме, на какой лежит TWordApplication), то ставим ее в самый конец списка инклудов.
                              3. Если хидер формы из п.2 подключают другие юниты (а в твоем примере это форма 2 и 3) — то эту строчку подключения, типа:

                              ExpandedWrap disabled

                                #include «Form1_.h»

                              тоже поставь в самый конец списка инклудов на каждом из юнитов.

                              Добавлено

                              Цитата laifik @

                              Но стоит мне только кинуть компонент на новую форму, а потом его убрать, как сразу лезут ошибки. Как- будто где-то что-то прописалось.

                              Да не «как-будто», а таки прописалось.
                              Блин, laifik, вы уже не первый год «программируете» но не перестаете меня удивлять своей… :wall:


                              laifik



                              Сообщ.
                              #15

                              ,

                                Цитата Adil @

                                Обычно прописывается соответствующий компоненту заголовочный файл в *.h-файле формы

                                Да нет. Я отслеживаю, чтобы заголовочный файл отсутствовал. Я имела ввиду какую-то скрытую прописку.

                                Цитата

                                Да не «как-будто», а таки прописалось.

                                То, что очевидно, я вижу. Есть какой-то скрытый момент, в котором хочу разобраться.

                                Цитата

                                Блин, laifik, вы уже не первый год «программируете» но не перестаете меня удивлять своей…

                                Я бы не взяла на себя смелость кого-то осуждать. Вы ведь не знаете, сколько, какой сложности и что я сделала за это время. Бывают моменты, которые сразу не доходят. Это происходит от недостатка информации. Вот когда по крупицам ее соберу, вопрос «ляжет» сам собою.
                                Что касается Вашего совета, он не снимает ошибки. Я еще вчера почитала внимательно сообщение и постаралась аккуратно его произвести. Но, увы…


                                Adil



                                Сообщ.
                                #16

                                ,

                                  Никакой скрытой прописки нет.
                                  У меня и компилится, и работает, что до добавления, что во время, что после.
                                  Где-то Вы в инклюдниках запутались.
                                  Если присмотреться к тексту ошибок

                                  Цитата

                                  [C++ Error] FileCtrl.hpp(70): E2015 Ambiguity between ‘Windows’ and ‘Word_2k::Windows’

                                  Видно, что при компиляции в тот момент, когда обрабатывается подключаемый FileCtrl.hpp (не обязательно явно подключаемый, скорее всего через другии hpp), компилятор уже «прошелся» по какому-то из «офисных» заголвочных файлов. Так что всё-таки повнимательней проверьте порядок подключения.
                                  Можно по-наставить до и после строчек подключения файлов дирректив типа

                                  ExpandedWrap disabled

                                    #pragma message «Befor vcl.h»

                                    #include <vcl.h>

                                    #pragma message «After vcl.h»

                                  и по появляющимся сообщениям (надо еще поставить галку у «Show general messages» в опциях проекта, вкладка «Compiliеr», правый нижний угол) отследить порядок подключения.


                                  laifik



                                  Сообщ.
                                  #17

                                  ,

                                    Спасибо. Это уже существенно.
                                    По Рамблеру нашла кучу таких вопросов, но только один раз ответ, что в данной ситуации модет помочь перестановка инклюдов (как Chow подсказал). А связи с чем, ответа нет. Теперь связь ясна.


                                    laifik



                                    Сообщ.
                                    #18

                                    ,

                                      Как выяснилось, в этом вопросе у меня пробел. Никогда не задумывалась о порядке подключения инклюдов. Добавляла компонент — прописывала библиотеку. Сделала огромную программу и ни разу не было двойственности в связи с подключением. Если бы не захотела удалить компонент, то и вопроса не возникло бы.
                                      Попробовала отследить порядок подключения, оставив главную форму, и создав новую. В главной форме такие библиотеки:

                                      ExpandedWrap disabled

                                        #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»

                                      В новой:

                                      ExpandedWrap disabled

                                        #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 двойственности нет.
                                      Если возможно, объясните, пожалуйста, каким образом можно узнать порядок прохождения библиотек не явно подключаемых. Комбинация

                                      ExpandedWrap disabled

                                        #pragma message «Befor vcl.h»

                                        #include <vcl.h>

                                        #pragma message «After vcl.h»

                                      мне ничего не дала, все подключила, а сообщений нет. Может дадите ссылку, где об этом можно почитать?


                                      Adil



                                      Сообщ.
                                      #19

                                      ,

                                        Цитата 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

                                        Поиск:

                                        Ответ в темуСоздание новой темы
                                        Создание опроса
                                        > E2015 Ambiguity between ‘Windows’ and ‘Word_2k::Wi, ошибка при переходе C++ B5.0 на 6.0  

                                        V

                                           

                                        Опции темы

                                        SAnatoliy
                                          Дата 16.3.2011, 14:37 (ссылка)
                                        | (нет голосов)
                                        Загрузка ... Загрузка …




                                        Быстрая цитата

                                        Цитата

                                        Шустрый
                                        *

                                        Профиль
                                        Группа: Участник
                                        Сообщений: 79
                                        Регистрация: 1.10.2007

                                        Репутация: нет
                                        Всего: нет

                                        В Builder 5.0 все компилируется и работает.
                                        Сейчас хочу проект перевести на 6.0, и компилятор выдает ошибку: 
                                        [C++ Error] ComCtrls.hpp(2638): E2015 Ambiguity between ‘Windows’ and ‘Word_2k::Windows’
                                        [C++ Error] ComCtrls.hpp(2839): E2015 Ambiguity between ‘Windows’ and ‘Word_2k::Windows’
                                        [C++ Error] ComCtrls.hpp(4140): E2015 Ambiguity between ‘Windows’ and ‘Word_2k::Windows’
                                        [C++ Error] ComCtrls.hpp(4259): E2015 Ambiguity between ‘Windows’ and ‘Word_2k::Windows’
                                        [C++ Error] ComCtrls.hpp(4429): E2015 Ambiguity between ‘Windows’ and ‘Word_2k::Windows’

                                        Вот на эти строки:
                                        typedef void __fastcall (__closure *TLVDrawItemEvent)(TCustomListView* Sender, TListItem* Item, const Types::TRect &Rect, Windows::TOwnerDrawState State);
                                        virtual void __fastcall DrawItem(TListItem* Item, const Types::TRect &Rect, Windows::TOwnerDrawState State);
                                            virtual bool __fastcall MsgSetRange(int Flags, Windows::PSystemTime SysTime) = 0 ;
                                            virtual bool __fastcall MsgSetRange(int Flags, Windows::PSystemTime SysTime);

                                        Что мне надо сделать чтоб все нормально компилировалось?

                                        PM MAIL   Вверх
                                        mrbrooks
                                        Дата 16.3.2011, 16:37 (ссылка)
                                        | (нет голосов)
                                        Загрузка ... Загрузка …




                                        Быстрая цитата

                                        Цитата

                                        трололомен
                                        ****

                                        Профиль
                                        Группа: Завсегдатай
                                        Сообщений: 4259
                                        Регистрация: 4.10.2006
                                        Где: Дол Гулдур

                                        Репутация: 167
                                        Всего: 306

                                        Цитата(SAnatoliy @  16.3.2011,  14:37 Найти цитируемый пост)
                                        Что мне надо сделать чтоб все нормально компилировалось? 

                                        определиться с namespace

                                        PM MAIL   Вверх
                                        SAnatoliy
                                        Дата 16.3.2011, 20:18 (ссылка)
                                        | (нет голосов)
                                        Загрузка ... Загрузка …




                                        Быстрая цитата

                                        Цитата

                                        Шустрый
                                        *

                                        Профиль
                                        Группа: Участник
                                        Сообщений: 79
                                        Регистрация: 1.10.2007

                                        Репутация: нет
                                        Всего: нет

                                        Цитата(mrbrooks @  16.3.2011,  16:37 Найти цитируемый пост)
                                        определиться с namespace 

                                        Простите. А можно подробней, а если не трудно примером по моему случаю.

                                        PM MAIL   Вверх
                                        oldcode
                                        Дата 17.3.2011, 12:32 (ссылка)
                                        | (нет голосов)
                                        Загрузка ... Загрузка …




                                        Быстрая цитата

                                        Цитата

                                        Шустрый
                                        *

                                        Профиль
                                        Группа: Участник
                                        Сообщений: 116
                                        Регистрация: 8.10.2010

                                        Репутация: 0
                                        Всего: 0

                                        Цитата(SAnatoliy @ 16.3.2011,  20:18)
                                        А можно подробней, а если не трудно примером по моему случаю.

                                        Вот это 

                                        Код
                                        Windows::TOwnerDrawState State
                                        Windows::PSystemTime SysTim

                                        попробуйте так:

                                        Код
                                        TOwnerDrawState State
                                        PSystemTime SysTim

                                        или так

                                        Код
                                        ::TOwnerDrawState State
                                        ::PSystemTime SysTim

                                        PM MAIL   Вверх
                                        SAnatoliy
                                        Дата 17.3.2011, 15:53 (ссылка)
                                        | (нет голосов)
                                        Загрузка ... Загрузка …




                                        Быстрая цитата

                                        Цитата

                                        Шустрый
                                        *

                                        Профиль
                                        Группа: Участник
                                        Сообщений: 79
                                        Регистрация: 1.10.2007

                                        Репутация: нет
                                        Всего: нет

                                        Все решил с этой проблемой.  Всем спасибо.

                                        Просто переставил #include «Word_2K_SRVR.h» в конец данного списка подключений.

                                        PM MAIL   Вверх
                                        oldcode
                                        Дата 18.3.2011, 13:03 (ссылка)
                                        | (нет голосов)
                                        Загрузка ... Загрузка …




                                        Быстрая цитата

                                        Цитата

                                        Шустрый
                                        *

                                        Профиль
                                        Группа: Участник
                                        Сообщений: 116
                                        Регистрация: 8.10.2010

                                        Репутация: 0
                                        Всего: 0

                                        увы, проблему это не решило

                                        PM MAIL   Вверх
                                        SAnatoliy
                                        Дата 18.3.2011, 15:38 (ссылка)
                                        | (нет голосов)
                                        Загрузка ... Загрузка …




                                        Быстрая цитата

                                        Цитата

                                        Шустрый
                                        *

                                        Профиль
                                        Группа: Участник
                                        Сообщений: 79
                                        Регистрация: 1.10.2007

                                        Репутация: нет
                                        Всего: нет

                                        Цитата(oldcode @  18.3.2011,  13:03 Найти цитируемый пост)
                                        увы, проблему это не решило 

                                        возможно, но при компилировании ошибка ушла.

                                        P.S.
                                        До конца не могу проверить, вышла еще одна ошибка другая.
                                        По интернету об этой проблеме много вопросов и все сводились к просто перемещинию порядка линкования.

                                        PM MAIL   Вверх



















                                        Ответ в темуСоздание новой темы
                                        Создание опроса
                                        Правила форума «С++ Builder»
                                        Rrader

                                        Запрещается!

                                        1. Публиковать ссылки на вскрытые компоненты

                                        2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

                                        • Литературу по С++ Builder обсуждаем здесь
                                        • Действия модераторов можно обсудить здесь
                                        • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
                                        • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) — крупнейший в рунете сборник материалов по Дельфи

                                        • FAQ раздела лежит здесь!

                                        Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

                                         

                                        0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
                                        0 Пользователей:
                                        « Предыдущая тема | C++ Builder | Следующая тема »

                                        Logo
                                        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…

                                      • Amazon kindle driver windows 10
                                      • Amazon corretto 11 for windows
                                      • Amazon app store windows 11 download
                                      • Amazing скачать бесплатно на русском для windows 10
                                      • Amazing лицензионный ключ скачать бесплатно для windows