![]() |
Модераторы: MetalFan |
![]() ![]() ![]() |
|
juicy_emad |
|
|||
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 18.3.2007 Репутация: нет Всего: нет |
Приветствую.
Я занимаюсь созданием сервера COM. Переношу код из среды Delphi7. Проблема: В этом проекте есть несколько функций, имеющих одно и тоже имя. Вот их прототипы: [pascal] constructor Create; overload; constructor Create(LayersNum: Byte; NeuronsNum: Word); overload; constructor Create(LayersNum: Byte; NeuronsNum: TDynArrayOfInteger); overload; constructor Create(LayersNum: Byte; NeuronsNum: TDynArrayOfInteger; SynapsesNum: TDynArrayOfInteger); overload; constructor Create(LayersNum: Byte; NeuronsNum: TDynArrayOfInteger; SynapsesNum: TDynArrayOfInteger; DontInit: Bool); overload; [/pascal] Насколько я понял, концепция COM не позволяет использование подобных перегруженых функций. Но, там есть тип необязательных параметров, под названием Optional (в книге написано, что параметры этого типа должны иметь тип ![]() ![]() Потом я делаю так (Код, просто, ради примера): [pascal] procedure TTNet.Create(LayersNum, NeuronsNum_v: OleVariant; var NeuronsNum_a: OleVariant; SynapsesNum, DontInit: OleVariant); begin Create(LayersCount, NeuronsCount); end; [/pascal] И получаю ошибку на строчке [pascal]Create(LayersCount, NeuronsCount);[/pascal] > [Error] uMain.pas(42): Not enough actual parameters Что я сделал не так? Где я ошибаюсь? Как мне решить проблему переноса вышеуказанных функций в сервер COM? P.S.: Что-то я уже ничего не понимаю. ![]() В Delphi Help про это использование параметров типа Optional, написано так: > Optional - Optional parameter. The Parameter type must be VARIANT and all subsequent > parameters must also be optional. Note that when you import a method with optional > parameters, Delphi does not add default values to the interface. They are still optional, > however, and when you call them you can pass EmptyParam rather than supplying a value. А именно: "when you call them you can pass EmptyParam". Вот я и пытаюсь понять, как это перевести: "когда вы вызываете их, вы _можете_ указывать EmptyParam" или ... > http://www.itword.net/modules/myarticles/a....php?storyid=98 "При вызове методам можно передавать параметры «OLEVariant». Многие параметры, передаваемые методам Word, являются необязательными (optional). Необязательные параметры, тем не менее, должны быть включены в обращения к методам, но могут быть определены как неинициализированные (Unassigned), чтобы указать, что они не используются. Для неиспользуемых параметров можно использовать переменную Delphi 4 называемую EmptyParam." Т.е. получается, что: "когда вы вызываете их, вы _должны_ указывать EmptyParam" Что делать-то? Как это можно понимать? Можно-ли в COM как-нибудь "проэмулировать" Overload функции из Delphi? Это сообщение отредактировал(а) juicy_emad - 18.3.2007, 02:18 |
|||
|
||||
Romkin |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 189 Регистрация: 14.11.2006 Где: Москва Репутация: нет Всего: 5 |
Переводи как "вы можете указать EmptyParam для обозначения отсутствующего значения"
![]() optional - для позднего связывания. Тебе, увы, надо указывать все параметры, ставя EmptyParam для отсутствующих. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: ActiveX/СОМ/CORBA" | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Rrader, Girder. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: ActiveX/СОМ/CORBA | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |