Вниз
Скачать: CL | DM;

Вопрос о параметрах интефейсных функций   Найти похожие ветки 

← →
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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.005 c
4-1253174465
Edward
2009-09-17 12:01
2011.12.18
Дублируются перехваченные с клавиатуры символы


2-1315514369
Германн
2011-09-09 00:39
2011.12.18
Компонент для вывода текста.


2-1315318888
Gu
2011-09-06 18:21
2011.12.18
Dll метод


15-1314712629
Арксант
2011-08-30 17:57
2011.12.18
Загрузка в Image часть изображения


2-1315253407
Captcha
2011-09-06 00:10
2011.12.18
Программный выбор элемента в ComboBox




   Наверх