-
Подскажите пожалуйста, каким образом можно вернуть массив строк из COM(OLE). Какого типа должна быть возвращаемая переменная и как в нее вписывать массив. Если можно небольшой примерчик. Заранее благодарен.
-
> Какого типа должна быть возвращаемая переменная
OleVariant
> как в нее вписывать массив
Средствами семейства VarArrayXXXXX-функций.
Например,
Result := VarArrayFromStrings(SomeStringList);
-
<Сергей М. ©> Огромное спасибо!
-
Еще вопросик. Все пишут про SafeArray при возврате массива, что это такое и зачем нужно?
-
Дык ыть станд.справка есть по теме "Safearrays" ..
-
Нет просто у меня задача вернуть массив строк так , чтобы он был доступен большинству клиентов. На данном этапе это Delphi, C#, C++. А когда речь идет о поддержке многими клиентами говорят нужно возвращать SafeArray, вот я и спрашиваю вас <Сергей М. ©> почему OleVariant а не SafeArray, в чем разница для клиентов?
-
> почему OleVariant а не SafeArray
Можно пользовать и непосредственно SafeArray. ручной работы при этом будет - мама не горюй.
Зачем отказываться от OleVariant-массивов, которые неявно преобразуются к SafeArray средствами самого Делфи-компилятора, когда OLE/COM-проект контролируется средствами встроенного в Делфи соответствующего визарда ?
-
OleVariant может хранить ссылку на SafeArray, и именно её он и хранит, когда создаются вариантные массивы... Соответственно, вашему клиенту, который не поддерживает вариантные массивы на уровне языка, надо будет сделать всего одну лишнюю операцию: вытащить из переданного VARIANT-а ссылку на SafeArray, а дальше всё то же самое, как если бы он сразу SafeArray получил
-
> VarArrayVarArrayFromStrings
Функции VarArrayXXX - это обертка над SafeArray