Вниз
Скачать: 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
3-1268739476
Rob
2010-03-16 14:37
2011.12.18
СУБД с возможностью хранения текстовых документов в сжатом виде.


2-1315465617
user1987
2011-09-08 11:06
2011.12.18
Вывод текста на рабочий стол


2-1315467611
Pushok
2011-09-08 11:40
2011.12.18
проверить ветки в TreeView


15-1314907012
Knight
2011-09-01 23:56
2011.12.18
Инсталляция программ Windows XP


15-1314476996
Юрий
2011-08-28 00:29
2011.12.18
С днем рождения ! 28 августа 2011 воскресенье




   Наверх