Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.116.44.205] |
|
Страницы: (10) « Первая ... 7 8 [9] 10 все ( Перейти к последнему сообщению ) |
Сообщ.
#121
,
|
|
|
У меня еще такой вопрос:
В декабре выходит новый компилятор от Borland. В нем будет возможность создавать приложения и на Паскале и на С++ и на С#. Визуальные компоненты также сохраняются. Если MapX успешно используется в Делфи, то какова вероятность того, что в новом компиляторе он будет хорошо работать сразу и в Паскале и в С++. Ведь это будет уже единая среда. Может ли быть ситуация, что в проекте на Паскале все будет работать, а в этом же компиляторе на C++ все будет глючить? О новом компиляторе http://www.borland.com/us/products/cbuilder/index.html |
Сообщ.
#122
,
|
|
|
Лена, я уже устал объяснять, что функциональность ActiveX-компонентов не зависит от того, из какого языка вызывать его функции.
Объясняю на пальцах. Есть стержень в шариковой авторучке. Если я пишу правой рукой и на бумаге, то все получается отлично, если пишу левой рукой - получается коряво. Если пишу правой рукой, но на стекле - ничего не получается. Вопрос: это глюк авторучки? Функции MapX(в том числ и поиск) уже реализованы программистами MapInfo в самом компоненте. Имеет ли для MS Word значение, будет он запущен из меню "Пуск", с рабочего стола или из проводника? P.S. Хотя зачем я это объясняю? Каждый волен упорно заблуждаться и ждать у моря погоды. |
Сообщ.
#123
,
|
|
|
Т.е. вы хотите сказать, что MapX также корректно работает и в Делфи и в Builder? Все проблемы в программисте, который пишет? Тогда почему техническая поддержка MapInfo четко написала мне, что компонент MapX не поддерживается MapInfo в Builder.
MapX распространяет документацию и для VBA и для Делфи и для VC. Для Builder ничего нет. Очевидно, выявлены проблемы работы компонента в среде Builder из-за особенностей этого компилятора. Для MapInfo важно чтобы их ActiveX работал в любом компиляторе. Для Builder ничего нет от MapInfo. Это подозрительно. Примеры на Делфи работают в Builder нет, разве это вина программиста т.е. меня ? |
Сообщ.
#124
,
|
|
|
Цитата Лена @ Если этот программист сваливает причины ошибок на инструмент, а не пытается разобраться - да.Все проблемы в программисте, который пишет? Цитата Лена @ Потому, что в технической поддержке сидят не программисты. Они знают только то, что им скажут, а остальное додумывают по мере своих способностей. Тогда почему техническая поддержка MapInfo четко написала мне, что компонент MapX не поддерживается MapInfo в Builder. Добавлено Цитата Лена @ Для Builder нет потому, что он близкий родственник Delphi. Или потому, что маркетинг не сказал, что это надо.Для Builder ничего нет. Очевидно, выявлены проблемы работы компонента в среде Builder из-за особенностей этого компилятора Да, и о каких особенностях компилятора идет речь? |
Сообщ.
#125
,
|
|
|
Trainer> Если этот программист сваливает причины ошибок на инструмент, а не пытается разобраться - да.
Первый мессинг этого топика имеет дату 30го августа. Топик набрал 9 страниц. Если это не попытка разобраться, тогда что таковым является? Потом, что ты написал звучит очень неубедительно. Было бы более убедительно, если б ты написал, что-то типа: "Если этот программист сваливает причины ошибок на инструмент, а не пытается разобраться - да. Вот я(Trainer) уже 5 лет разрабатываю программы с использованием MapX и Builder, и все нормально работает. Нет никаких проблем с поиском" Trainer> Потому, что в технической поддержке сидят не программисты. Они знают только то, что им скажут, а остальное додумывают по мере своих способностей. В тех поддержке сидят программисты (возможно не асы), которые отлично знают этот продукт. И вопрос, тестировался ли MapX на совместимость с СBuilder, не может являться фирменной тайной. MapX поставляется с примерами написанными на Visual C++, Delphi, Visual Basic. Значит, или не тестировался c CBuilder или проекты тест не прошли. Потом напр. Oracle, свои продукты, к примеру Pro*C++, тестирует только на совместимость с Visual C. Trainer> Для Builder нет потому, что он близкий родственник Delphi. Builder это С++, Delphi это Pascal. Может и мизерная, но всеж таки какая то разница имеется. Trainer> Да, и о каких особенностях компилятора идет речь? Например http://info.borland.com/devsupport/borlandcpp/patches.html imho ты неправ. Но, если у тебя есть на компе Delphi6/CBuilder6/MapX5, тогда могу написать в выходные маленькую программку на Delphi, для поиска в стандартной карте c использованием FindDataSet/FindField. И аналогичную программу на Builder-е. Программа на Delphi будет работать. А Builder-овская будет давать сбой. И отправить тебе оба проекта. Если вернешь мне работающую Builder-овскую, то respect, и ты прав и можешь устраиваться в mapInfo в отдел технической поддержки. |
Сообщ.
#126
,
|
|
|
Цитата Rosty @ У меня нет MapX вообще, о чем я ранее уже писал.если у тебя есть на компе Delphi6/CBuilder6/MapX5, Я знаю, что такое ActiveX, я вижу исходники компонента для Builder'а. Если ты мне покажешь в этом исходнике место, где компонент определяет, что он вызывается из программы, написаной в Builder'е, а не, например, в Delphi, и поэтому отказывается работать, то я скажу, что я не прав. Добавлено Цитата Rosty @ И что из этого влияет на работу MapX? А то ведь я могу привести ссылку на, например, Microsoft Platform SDK или Visual Studio. Будет ли это означать, что MapX не может работать с Visual Studio и вообще под Windows? Например http://info.borland.com/devsupport/borlandcpp/patches.html Добавлено Цитата Rosty @ Выкладывай, посмотрю. Но без MapX оттрассировать не смогу. DFM-ы должны быть в текстовом формате.И аналогичную программу на Builder-е. Программа на Delphi будет работать. А Builder-овская будет давать сбой. Цитата Rosty @ Хотелось бы в это верить. Практика обычно прозаичнее, имел возможность в этом убедиться, правда, не в программировании. Точнее - в программировании не под PC. Например, с Philips.В тех поддержке сидят программисты (возможно не асы), которые отлично знают этот продукт. Цитата Rosty @ Или это в MapInfo просто никому не надо. Значит, или не тестировался c CBuilder или проекты тест не прошли. |
Сообщ.
#127
,
|
|
|
Ребята, только не сортесь, я Вас очень прошу!
trainerу отдельное спасибо, что указал мне во время дискуссии правильную загрузку датасетов. |
Сообщ.
#128
,
|
|
|
Это не ссора. Это выявление истины.
|
Сообщ.
#129
,
|
|
|
С сылкой я имел ввиду, что каждый компилятор (+текущие его системные файлы) имеют свои баги.
По всей видимости поддержка ActiveX реализована более удачно в Delphi, чем в Buildere. Напр. http://info.borland.com/devsupport/bcppbuilder/patches/bcpp5/BCB5FIXES.HTML в 5м buildere исправляются такие баги связанные с ActiveX. When importing a type library which contains a user-defined record, the _TLB.h file contains a declaration of the GUID for the user-defined record, but the _TLB.cpp file contains no definition thereof. The override flag for CAN_CREATE (-Yu) doesn't work. GUIDs in a type library which are associated with records are not output in the generated .cpp file but ARE output in the generated .h file The supplied BUILD_.h is incorrect. utilcls.h uses __uuidof(DISPINTF), where DISPINTF is a template parameter defaulted to IDispatch. This *fails* at runtime where __uuidof(IID_IDispatch) succeeds Including MSVBVM60.DLL containing TLB fails on generating the pascal for a COM interface, with Error: 'GhostMethod_76' already exists. TAutoDriver copy constructor (LCID) does not clear out m_ExcepInfo, but TAutoDriver copy constructor (TAutoDriver) does. TVariant& operator= (Const TBaseVariantT& rhs) does not compile. When importing a type library which contains a user-defined record, the _TLB.h file contains a declaration of the GUID for the user-defined record, but the _TLB.cpp file contains no definition thereof. Can not use an activeX control created by Visual Basic V6.0 that does not have 'CAN CREATE' flag set in its type info. VB6 controls will not allow methods to be called via the OCX wrapper. The Dispatch wrapper works but cannot be made visible. Сам пример. Используется Mapinfo-ская карта Wordlcap.map. Delphi проект находит по втрому полю(Country) "FALKLAND ISLANDS" и позиционирует карту на Stanley. Builder-овская программа при команде CMapXFindFeature *FoundObj = lyr->Find->Search(WideString("FALKLAND ISLANDS"), v); дает сбой IsBound() возвращает false на 4270 строке utlcls.h. //********************* Delphi *******************************// procedure TFindForm.Button1Click(Sender: TObject); var FoundObj, ds: variant; lyr : CMapXLayer; unusedParam: OleVariant; begin TVarData(unusedParam).vType := varError; TVarData(unusedParam).vError := 2147614724; // DISP_E_PARAMNOTFOUND; lyr := currentMap.Layers.Item[1]; ds := currentMap.Datasets.Add(miDataSetLayer, lyr, lyr.Name, unusedParam, unusedParam, unusedParam, unusedParam, unusedParam); lyr.Find.FindDataset := ds; lyr.Find.FindField := ds.Fields.Item[2]; FoundObj := lyr.Find.Search('FALKLAND ISLANDS', ''); if (foundObj.findrc Mod 10 = 1) then currentMap.ZoomTo(2, FoundObj.CenterX, FoundObj.CenterY) else showmessage('Exact Match Not found'); end; // **************** BUILDER ****************************************** void __fastcall TForm1::Button5Click(TObject *Sender) { Variant v; v.VType = varError; v.VError = 2147614724; CMapXLayer *lyr = Form1->Map1->Layers->_Item(OleVariant(1)); CMapXDataset *ds = Form1->Map1->DataSets->Add(miDataSetLayer,OleVariant(lyr), OleVariant(lyr->Name),v,v,v,v,v); lyr->Find->FindDataset = ds; lyr->Find->FindField = ds->Fields->_Item(OleVariant(2)); v.VType = varString; v.VString = ""; CMapXFindFeature *FoundObj = lyr->Find->Search(WideString("FALKLAND ISLANDS"), v); if(FoundObj->FindRC % 10 == 1) { Form1->Map1->Zoom = 2; Form1->Map1->CenterX = FoundObj->get_CenterX(); Form1->Map1->CenterY = FoundObj->get_CenterY(); } else { ShowMessage("Exact Match Not found"); } } DFM файл: object Form1: TForm1 Left = 192 Top = 107 Width = 761 Height = 548 Caption = 'Form1' Color = clBtnFace Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -11 Font.Name = 'MS Sans Serif' Font.Style = [] OldCreateOrder = False PixelsPerInch = 96 TextHeight = 13 object Map1: TMap Left = 0 Top = 4 Width = 601 Height = 513 ParentColor = False TabOrder = 0 ControlData = { 2CA107001D3E000005350000010000000F000080FFFEFF3B45006D0070007400 ... удалил строки. Это объект MapX 3F0D64FC8998EA593F00000000000000000100000000000000} end object Button5: TButton Left = 605 Top = 2 Width = 137 Height = 23 Caption = 'Find Falkland' TabOrder = 1 OnClick = Button5Click end end |
Сообщ.
#130
,
|
|
|
Цитата Rosty @ В имеющихся у меня Borland C++Builder5 UP1 и Borland C++Builder6 UP4 в строке 4270 нет вызовов функции IsBound. В BCB6 эта строка вообще не содержит кода, в BCB5 содержит часть объявления одной из функций. дает сбой IsBound() возвращает false на 4270 строке utlcls.h. Добавлено Цитата Rosty @ Зачем давать ссылку на исправленные ошибки? Я по-прежнему жду информацию о том, что принципиально препятствует работоспособности ActiveX в BCB. Для любой версии Builder'а Напр. http://info.borland.com/devsupport/bcppbui.../BCB5FIXES.HTML |
Сообщ.
#131
,
|
|
|
>сбой IsBound()
Да, именно эта ошибка измучила меня до полного душевного истощения. Если бы наш форум не читал еще одни человек, который мне подсказал о поиске, то я так бы и не решила этот вопрос. В тех.суппорт сидит некая Синди и выдает примеры только на VBA. На Builder получить ничего не возможно. Правда, судя по их форуму, периодически возникают вопросы о том, как работает MapX в Builder 6, но ответ Синди всегда одни – MapInfo не тестировала MapX в среде Builder, поэтому поддержки нет. Тем не мене эта Синди согласилась принять мой слой дорог для поиска улицы. В итоге я получила важную информацию о том, что поле должно быть integer, а не float. Однако приложение по-прежнему не работало. Потом я получила еще одну подсказку от читателя форума, он нашел в help: “Для Find.FindDataSet Dataset of field to match against. If not specified, a layer's KeyField is used. А для Layer.KeyField-a This string property identifies the column (field) name in the layer's MapInfo table that will be set or retrieved by the KeyValue property of a feature object. It currently defaults TO THE FIRST COLUMN in the layer's table. This property does not apply to raster or userdraw layers. An error is raised if you try to set the KeyField to an invalid field name.” После переноса поля на первое место поиск заработал, но через FindDataSet/FindField не работает. Rosty ели у вас есть хоть какие-то фрагменты кода на C++ Builder для MapX вышлите мне please! Л. |
Сообщ.
#132
,
|
|
|
..\Borland\CBuilder6\include\vcl\utilcls.h
4267: template <class DISPINTF> HRESULT 4268: TAutoDriver<DISPINTF>::Invoke(DispatchFlag ............... 4269: { 4270: _ASSERTE(IsBound() /* Must be bound to perform Invoke() */); На счет ссылки. Ты спрашывал какие могут быть особенности у компилятора. Например такие, что программа откомпилированная на CBuilder5 может работать и может не рвботать в зависимости от того, установлен ли последний SP. Это раз. Во вторых, ты бы сколько ставил на то, что тот SP исправляет все баги BCB5? А на счет приведенного кода по существу ничего сказать не можешь? |
Сообщ.
#133
,
|
|
|
Lena >Rosty если у вас есть хоть какие-то фрагменты кода на C++ Builder для MapX вышлите мне please!
Еще раз??? |
Сообщ.
#134
,
|
|
|
Rosty судя по вашей компетентности в вопросе о MapX, я предположила, что у вас могут быть фрагменты любого работающего кода. Вот и попросила.
В старом приложении, найденная улица не только увеличивалась зумом на карте, но и становилась жирной и красилась в красный цвет. Займусь этим в понедельник. О результатах сообщу участникам этой дискуссии. |
Сообщ.
#135
,
|
|
|
Цитата Guest @ Я не спрашивал, какие могут быть особенности у компиляторов. У меня достаточно большой опыт работы с разнообразными компиляторами. Я спрашивал, какие особенности компилятора Borland C++ 5.5.x или 5.6.x препятствуют правильной работе MapX.Ты спрашывал какие могут быть особенности у компилятора. Цитата Цитата о каких особенностях компилятора идет речь?Очевидно, выявлены проблемы работы компонента в среде Builder из-за особенностей этого компилятора Касаемо строки 4270. У меня Borland C++ 6 Update Pack 4. Строка под номером 4270 содержит только пустой комментарий. Update Pack 4 помимо много еще чего как раз заменяет и utilcls.h Теперь относительно самой функции IsBound. Она проверяет, связан ли компонент с сервером. Цитата Guest @ Я ни на что ставить не намерен. Есть доказательства - это одно, нет доказательств - другое. Вот пример недавно обнаруженного "глюка компилятора": Странный глюк . Я такого видел уже достаточно много и крайне скептически отношусь к очередным "открывателям". Во вторых, ты бы сколько ставил на то, что тот SP исправляет все баги BCB5? |