Форум: "Начинающим";
Текущий архив: 2011.12.18;
Скачать: [xml.tar.bz2];
ВнизВопрос о параметрах интефейсных функций Найти похожие ветки
← →
vasiliy87 (2011-09-05 15:59) [0]Здравствуйте. Создаю небольшой интерфейс, который могли бы использовать и другие языки программирования, поддерживающие интерфейсы модели COM. Назрел вопрос о совметимости параметров функций. Допустим есть некий интерфейс и функция:
ITestInterface = interface
function Test(MyRec: PMyRec): integer; stdcall;
end;
Тут как бы все понятно, параметр у функции один, это указатель на запись TMyRec. Подскажите пожалуйста, есть ли какая-нибудь разница в немного другом, удобном для меня представлении этой же функции, а именно, что если я запишу ее так:function Test(var MyRec: TMyRec): integer; stdcall;
Прошерстил Windows.pas, и во многих местах встречаю var, но и просто указателей на записи очень много, полагаю, разный народ в разные годы его составлял, поэтому нет единого написания. Буду благодарен за любые пояснения.
← →
Медвежонок Пятачок © (2011-09-05 16:13) [1]разница будет для вызывающего.
если у тебя будет var, а у него будет рекорд, то он не сможет вызвать твою функцию через @his_record
Будет вынужден создать переменную и натравить ее на свой рекорд.
← →
Игорь Шевченко © (2011-09-05 16:51) [2]
> он не сможет вызвать твою функцию через @his_record
сможет, добавив ^
← →
gosha52 (2011-09-05 17:33) [3]> он не сможет вызвать твою функцию через @his_record
Это если он тоже пишет на паскале. А в си как будет выглядеть вариант с var интересно? Помоему как раз как первый вариант, нет разве?
← →
vasiliy87 (2011-09-05 17:35) [4]gosha52,
да да, именно это меня и интересует.
← →
Игорь Шевченко © (2011-09-05 17:36) [5]Запрещается:
5. Преднамеренное использование разных ников в одной ветке.
← →
Медвежонок Пятачок © (2011-09-05 17:37) [6]более интересно если он пишет не на си а на vba.
и как он сконструирует рекорд?
← →
Dimka Maslov © (2011-09-05 17:39) [7]Вообще в COM-интерфейсах можно передавать только параметры определённых типов. В противном случае может всё перестать работать. На самом деле это не так, передавать можно всё, что угодно, но только если сервер и клиент разработаны совместно, работают в одном адресном пространстве и разработчик отчётливо понимает, что он делает
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2011.12.18;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.004 c