Форум » [x]Harbour » TOleAuto -> win_ole ? *for Excel » Ответить

TOleAuto -> win_ole ? *for Excel

Новичок: Я постоянно использовал TOleAuto ... для работы с Excel (версия 18.01), в один прекрасный момент скачал последнее обновление версии hmg-18.08, и поперло куча ошибок при взаимодействии с Excel, пришлось откатить на версию 18.01 и посмотреть что же случилось, оказывается начиная с версии 18.05 было заменено: " using of win_OleAuto class from hbwin library instead of TOleAuto class from HbOle library. ". Во-первых, неприятное ощущение, типа что опять случилось , во-вторых, в связи с чем было принято решение полной замены, и какие плюсы от этого имеем, и в третьих, разница - требуется чуток изменить, или придется переписывать код?

Ответов - 5

Pasha: hmg содержал очень устаревшую библиотеку hbole с классом TOleAuto, и стандартную библиотеку хаобора hbwin с аналогичными средствами работы с объектами ole, только значительно доработанными и содержащими дополнительные возможности. Естественно, предпочтительнее использовать новые средства, поэтому старую библиотеку hbole убрали. Разница между ними в инициализации объектов. Собственно можно сделать команды препроцессора вроде: #xtranslate TOleAuto():new(<c>) => win_oleCreateObject( <c> ) и не менять свои сырцы

Perec: Pasha пишет: hmg содержал очень устаревшую библиотеку hbole с классом TOleAuto, и стандартную библиотеку хаобора hbwin с аналогичными средствами работы с объектами ole, только значительно доработанными и содержащими дополнительные возможности. А можно чуть подробнее про дополнительные возможности? Спасибо

Pasha: Из харбора старую реализацию (а это и есть hbole) убрали еще в 2009-м году, в hmg она как раз и сохранилась, и что там за 9 лет появилось - наверное много чего. Сразу напрашивается назвать поддержку уникода, лучшую поддержка всяких разных типов Variant. Из последнего: год назад добавилась поддержка двумерных массивов, позволяющая в экселе одной командой заполнять данными диапазон ячеек. Есть набор дополнительных функций, но не скажу, есть ли мануал для них. Примеры использования можно посмотреть в папке tests


Новичок: Подключил HbOle... и поперло ошибки, к примеру, дают ошибки при: 1. oList:Range( "A11:C11" ):Set( "VerticalAlignment", -4108 ) пришлось везде изменить на выражение oList:Range( "A11:C11" ):VerticalAlignment := -4108 то есть Set() не прокатывает, также и для Get() 2. Также если дата пустая, то также выдается ошибка oList:Cells( 09, 02 ):Value := CToD('') очень неудобно, приходится постоянно проверять дату If(Empty(DAT),'',DAT) ... то что нашел в данный момент В итоге, "простое" изменение TOleAuto... -> win_ole... не проходит, приходится опять лопатить/пересматривать код *какие еще грабли в дальнейшем... )

Andrey: Новичок пишет: приходится опять лопатить/пересматривать код Никуда от от этого не деться. Сам перелопачивал свои исходники.



полная версия страницы