На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
[!] Как относитесь к модерированию на этом форуме? Выскажите свое мнение здесь
Страницы: (10) « Первая ... 8 9 [10]  все  ( Перейти к последнему сообщению )  
> Поиск объекта , Вопрос тем, кто работал с MapX5.0
    У меня C++ Builder 6 SP4
    Прилагаю в архиве файл ..\Borland\CBuilder6\include\vcl\utilcls.h и постоянную ошибку возникающую в Builder:
    При вводе 4274получаю:
    _ASSERTE(IsBound() /* Must be bound to perform Invoke() */);
    Прикреплённый файлПрикреплённый файлutilcls.zip (29.15 Кбайт, скачиваний: 127)
      Отдельно взятый кусок программы в отрыве от остального может вести себя как угодно. Надо сравнивать полностью проекты, делающие одно и то же.
      Анализ не производится по принципу "Вырежем произвольный кусок и посмотрим, что получится"
        Чтобы выявить ошибку, я создала новый проект: кнопка, один слой, с одним и тем же кодом. Один в Делфи, другой в Builder. Код выше приводился пользователем Rosty. В Делфи код работает в Builder нет :(
        Пользователь MAX2002, который работал с MapX, тоже во время дискуссии говорил, что это у Builder-а проблема...
        Все таки надеюсь на хорошую декабрьскую версию :)
          Trailer >
          Отдельно взятый кусок программы в отрыве от остального может вести себя как угодно. Надо сравнивать полностью проекты, делающие одно и то же.
          Анализ не производится по принципу "Вырежем произвольный кусок и посмотрим, что получится"

          Могу выставить полный проект, но мне непонятно, как можно проверить работу программы, которая в основном состоит из одного ActiveX, если этот ActiveX не установлен на компьютере? Ты просил исходный код и DFM в текстовом виде. И я выложил ВЕСЬ код. :)
          Я бы выложил и весь проект, но нет кнопки подключения файла. Видимо для этого, нужно бы зарегистрироваться.

          Trailer >
          Я не спрашивал, какие могут быть особенности у компиляторов. У меня достаточно большой опыт работы с разнообразными компиляторами. Я спрашивал, какие особенности компилятора Borland C++ 5.5.x или 5.6.x препятствуют правильной работе MapX.

          Попробую объяснить третий раз. Каждый компилятор, точнее ее lib файлы содержат баги. Не является исключением и CBuilder. Ссылки на такие найденные баги я приводил. Из за какого-то Builder-овского бага не работает Find с установленными значениями FindDataSet, FindField.

          Ты утверждаешь, что MapX должен работать на все 100 с Builder. Но ты только слышал об этом компоненте. Его можно скачать с сайта mapinfo.com. Хочешь продолжить спор, скачай, посмотри что это. Я знаю mapX и не хочу спорить с человеком, который только слышал о нем. И который в свою правоту может только привести, что хорошо знает ActiveX и имеет большой опыт работы с компиляторами Builder.
            Lena >
            В старом приложении, найденная улица не только увеличивалась зумом на карте, но и становилась жирной и красилась в красный цвет

            Один из способов это сделать:
            ExpandedWrap disabled
                if(FoundObj->FindRC % 10 == 1)
                {
                  Form1->Map1->Zoom = 2;
                  Form1->Map1->CenterX = FoundObj->get_CenterX();
                  Form1->Map1->CenterY = FoundObj->get_CenterY();
                  double x  = FoundObj->LabelPoint->get_X();
                  double y  = FoundObj->LabelPoint->get_Y();
                  int n = lyr->Labels->Count;
                  for(int i = 1; i<=n; i++)
                  {
                    CMapXLabel *lbl = lyr->Labels->_Item(OleVariant(i));
                    if(lbl->AnchorX==x&&lbl->AnchorY==y)
                    {
                      lbl->Style->TextFontColor = RGB(128,0,0);
                      UINT nArgErr = (UINT)-1;
                      DISPPARAMS dispparams;
                      VARIANTARG va;
                      dispparams.rgvarg = &va;
                      dispparams.rgvarg[0].vt = VT_BOOL;
                      dispparams.rgvarg[0].boolVal = TRUE;
                      dispparams.cArgs = 1;
                      dispparams.cNamedArgs = 0;
                      lbl->Style->TextFont->Invoke(DISPID_FONT_BOLD, IID_NULL, 0, DISPATCH_PROPERTYPUT,
                            &dispparams, NULL, NULL, &nArgErr);
                      break;
                    }
                  }

            Но есть один минус, перебираются все метки, а таких меток на карте может быть несколько сот.
            Я не вижу такого свойства у CMapXFindFeature, с помощью которой можно бы от нее за один шаг, перейти к соответствующей метке. Но есть идея. В понедельник проверю, и если работает, тогда спроектирую класс и отправлю. :)
              Цитата Rosty @
              Хочешь продолжить спор, скачай, посмотри что это
              Мне за решение проблем некоего Rosty не платят. Чтобы я еще что-то для этого качал.
                Trainer > Мне за решение проблем некоего Rosty не платят.
                Чтобы я еще что-то для этого качал.

                Уважаемый, нет у меня таких проблем, которых ты мог бы решить.

                Прочитал твой ответ на вопрос заданный "ТЕМ КТО РАБОТАЛ С МapX5", типа:

                Search метод должен работать в Buildere при установленных значениях
                FindDataSet/FindField. И если он не работает то только потому, что
                у кодера руки кривые.

                Я подумал, мало того, что кадер трындит о том, что не знает, да еще поучивает
                человека, который в MapX разбирается несравненно лучше чем он. И решил вывести
                это кадра на чистую воду. imho мне это получилось. Вместо конкретного ответа,
                сперва у тебя туфли были маленькие(нет MapX), потом штаны давили
                (на той строке ничего нет), потом пол был кривой(нельзя вырывать куски кода из проекта).
                Теперь ....(тебе не платят). :)

                P.S. Что, приведенный мной анекдот о мостах Будапешта, тебе не понравился, что ты его дважды удалил? :)
                  Rosty
                  Заканчивай, ты себя не очень корректно ведешь. К тому же trainer прав, если нужно, то можно заставить работать MapX и с Builder'ом. На вскидку, можно написать dll-ку на Delphi и ее юзать из Builder'а. Есть и более сложные способы, но при желании все возможно. В конце концов, можно все вообще руками сделать (я имею в виду работу с ActiveX). Так что хватит наездов и несмешных анекдотов, я не думаю, что кому-нибудь это интересно читать.
                    Artalex, я вел себя довольно корректно. Обещал код. Код выложил так,
                    как просили. Даже не ждал выходных. И даже указал один из возможных способов
                    решения проблемы. (IsBound() дает false, но есть еще ф-ия Bound())
                    Ожидал ответа типа 1:
                    "Смотри ламер, это делается так и так". Моим ответом, был бы,
                    "Спасибо, ты монстр (в положительном смысле) и я действительно ламер, но буду стараться"
                    Тип 2: "Да, код не работает. Borland здесь что-то явно нахимичил".
                    Мой ответ: "Бывает".

                    И ответ, которого я бы дал в данном случае, будучи на месте Trainer.
                    "Смотри, хоть я с тобой не согласен, но у меня нет времени разобраться в этом
                    вопросе, по-этому, пусть будет так, как ты говоришь, и я был неправ на счет того,
                    что XY не разобрался(ась) в MapX."

                    Все. Это альфа и омега, когда общаются два спеца. Вместо этого: и то не то и то не так,
                    и договорились до "у меня нет дел до проблем некого Rosty".
                    И лично мне не нравится, если мои ответы удаляют. Типа барин(moder) делает что хочет.

                    Потом, вопрос не в том, что работает ли MapX с Builder-ом.
                    Он работает и довольно неплохо. Но метод Search, при установленных
                    значениях FindDataset/FindField дает сбой.
                    Trainer утверждает, что если разобраться, тогда можно заставить
                    Search работать. Я попросил его показать, как это делать. Если б он это сделал,
                    я был бы ему благодарен.

                    Теперь Ты утверждаешь, что MapX и Builder лучшие друзя. Судя по Твоему ответу,
                    делаю вывод, что, конечно и на твоем компе этот компонент не установлен.
                    И этого компонента Ты тоже в глаза не видел.
                    Для того, чтоб находить любой объект не нужна dll-ка, это через голову.
                    Есть другой способ. Более элегантный и более эффективный.

                    На счет несмешного анекдота, Ты не прав. То что я привел, описывает одну из основных
                    свойств или сторон программирования. Если программа правильно написана, тогда она будет работать на компе, даже если эту программу писал пастух. Но если она не правильна, тогда она не будет работать, даже если солнышко по вечерам стучит в окно автора программы и спрашивает:
                    Trainer, а завтра во сколько? И с востока или с запада.
                      Лена, это снова я.
                      Не факт, что MapX будет совместим с очередной версией Билдера. Судя по твоей переписке с Синди, их это мало волнует. Пишут они свои примочки
                      на VBA, у дяди Билли к ним претензий нет, остальное побоку. Поэтому не жди до декабря.
                      Проблему можно можно решить радикально (не падай в обморок, у меня два раза был выбор - либо я делаю работу, либо пишу заявление) - установи
                      Дельфи и к декабрю (а скорее всего - намного раньше) у тебя все получится.
                      Сорри за лирику, но мне пришлось в пожарном порядке переходить с AutoLISP на Watcom C\C++ 10, а еще через три года - с Ваткома на Билдер.
                      Не думаю, что переход Дельфи-Билдер окажется сложнее.
                      Всем остальным - ребята, давайте жить дружно! :) Эмоции есть у всех, иногда прорывает - и не надо воспринимать это, как оскорбление.
                      Честно говоря, trainer мог бы давно плюнуть на этот топик - но тем не менее пытается если не дать решение, то хотя бы приблизиться
                      к истине (я не подлизываюсь, это мое мнение о нем и не только по этому топику).
                      ЗЫ.
                      ExpandedWrap disabled
                          if (FoundObj->FindRC % 10 == 1) {
                            // ...
                          }

                      Всегда считал, что всякие Фаунды должны возвращать либо true/false, либо 1/0, либо addr/NULL. Но чтоб вот так :blink:
                        Rosty
                        Цитата
                        Теперь Ты утверждаешь, что MapX и Builder лучшие друзя.

                        Ткни пальцем где я говорил это. :wacko:

                        Цитата
                        Судя по Твоему ответу, делаю вывод, что, конечно и на твоем компе этот компонент не установлен.

                        Не установлен, и я не считаю себя из-за этого ущербным. ;)

                        Цитата
                        Для того, чтоб находить любой объект не нужна dll-ка, это через голову.
                        Есть другой способ. Более элегантный и более эффективный.

                        Я же написал, что это "на вскидку". Я, как и trainer, просто не хочу себе забивать голову этой проблемой. Но то, что решение этой проблемы существует - это 100%. Можешь считать меня самоуверенным, если честно, то мне пофиг. :whistle:

                        Цитата
                        Если программа правильно написана, тогда она будет работать на компе, даже если эту программу писал пастух.

                        trainer об этом же и говорил. Может хватит, а ? Я бы предложил тебе в приват перейти, но ты же не зарегистрирован. Эту тему я больше засорять не буду. Если есть желание, то можем по e-mail продолжить обсуждение этого вопроса.
                          Rosty, открой личико! >:(
                            По порядку:
                            Цитата Rosty @
                            Тип 2: "Да, код не работает. Borland здесь что-то явно нахимичил".
                            Как мне кажется, программирование - точная наука и в привлечении для объяснения чьих-то проблем магии и прочих потусторонних сил не нуждается. Есть два варианта:
                            1) Источник проблем обнаружен и объяснен(здесь возникает ошибка потому, что...);
                            2) Источник проблем не обнаружен(магия, чертовщина, "здесь что-то явно нахимичил" и т.д. и т.п.).
                            ASSERTE - это следствие, а не причина.
                            Цитата Rosty @
                            и договорились до "у меня нет дел до проблем некого Rosty".
                            Именно так. Если у меня возникнет подобная проблема - я ее решу. Решать проблемы других я не обязан.
                            Цитата Rosty @
                            И лично мне не нравится, если мои ответы удаляют.
                            Для анекдотов есть раздел "Юмор".
                            1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                            0 пользователей:


                            Рейтинг@Mail.ru
                            [ Script execution time: 0,0411 ]   [ 15 queries used ]   [ Generated: 19.05.24, 22:40 GMT ]