Задача такая — передать структуру данных а компонент. Для этого удобно использовать BSTR — буфер произвольной длины. Делаю я так:
unsigned long length; // необходимый размер буфера в байтах
BSTR bstr=SysAllocStringByteLen(0, length);
затем полученный BSTR передаю методу компонента.
Есть в этом коде какие-нибудь тонкие места? Дело в том, что начиная с какого-то момента программа на основе этого метода перестала работать — выдает ошибку "Недостаточно памяти для выполнения операции"