Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Передача структур через OleVariant 
:(
    Опции темы
VictorPr
Дата 1.7.2004, 17:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 1.7.2004

Репутация: нет
Всего: нет



День добрый. Вопрос такой. Каким образом, в Делфи возможно передать клиенту из метода COM некую структуру, используя OleVariant в качестве out параметра?
Заранее спасибо.

PM MAIL   Вверх
<Spawn>
Дата 1.7.2004, 19:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Око кары:)
****


Профиль
Группа: Экс. модератор
Сообщений: 2776
Регистрация: 29.1.2003
Где: Екатеринбург

Репутация: 44
Всего: 64



А зачем передавать через OleVariant? Можешь попробовать набросать интерфейс за место структуры и передавать указатель на его экземпляр. Недавно что то похожее в книге видел.


--------------------
"Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков.
PM MAIL ICQ   Вверх
VictorPr
Дата 2.7.2004, 08:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 1.7.2004

Репутация: нет
Всего: нет



Почемуто все ссылаются на книги biggrin.gif Дело в том, ято этого требует клиентская программа. Ей нада получить именно вариант.
PM MAIL   Вверх
Girder
Дата 2.7.2004, 09:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лентяй 2
***


Профиль
Группа: Участник Клуба
Сообщений: 1993
Регистрация: 12.5.2004

Репутация: 31
Всего: 155



Напиши как и чего ты хочеш в виде кода. Так тебе быстрее помогут.


--------------------
Как слышим, так и пишим.
Истина где-то там...
PM   Вверх
VictorPr
Дата 2.7.2004, 11:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 1.7.2004

Репутация: нет
Всего: нет



Да тут дело оказалось проще, можно структуры и так гонять, нада только описать их в TLB
А вот возникла другая трабла. Как передать вложенные структуры? Например:
TFileInfo = packed record
m_Name: WideString;
m_Size: Integer;
m_AllocSize: Integer;
m_Creation: WideString;
m_Change: WideString;
m_LastAccess: WideString;
m_LastWrite: WideString;
end;

TDir_Entry = packed record
m_Size: Integer;
m_Files: ^TFileInfo;
end;
Дело в том, что изменить этот код я не могу, он всё равно перегенерится делфёй. Я программер С++ и понять не могу как в паскале сделать следующее, вторая структура содержит указатель на первую, потому как в TLB прописанно:
typedef struct tagTDir_Entry
{
long m_Size;
struct tag TFileInfo * m_Files /*Warning: unable to validate structure name: */;
int TDir_Entry_DUMMY;
} TDir_Entry;
Вот, но мне нада этот указатель сделать динамическим массивом. Пример как это в С++ делается:
TFileInfo * m_Files = new TFileInfo[10].

Как такое сделать в паскале?
PM MAIL   Вверх
<Spawn>
Дата 2.7.2004, 12:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Око кары:)
****


Профиль
Группа: Экс. модератор
Сообщений: 2776
Регистрация: 29.1.2003
Где: Екатеринбург

Репутация: 44
Всего: 64



Код
PFileInfo = ^TFileInfo;
TFileInfo = packed record
m_Name: WideString;
m_Size: Integer;
m_AllocSize: Integer;
m_Creation: WideString;
m_Change: WideString;
m_LastAccess: WideString;
m_LastWrite: WideString;
end;

TDir_Entry = packed record
m_Size: Integer;
m_Files: array of PFileInfo;
end;

Добавлено @ 12:22
Задавать размер так
Код
SetLength(DirEntry.m_Files, 10);
for i := 0 to 9 do
 GetMem(DirEntry.m_files[i], SizeOf(TFileInfo));


Это сообщение отредактировал(а) <Spawn> - 2.7.2004, 12:24


--------------------
"Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков.
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0533 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.