Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2011.12.18;
Скачать: 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 вся ветка

Текущий архив: 2011.12.18;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.012 c
11-1240042285
imp
2009-04-18 12:11
2011.12.18
Перемещение закладок в TKOLTabControl


4-1219926981
tytus
2008-08-28 16:36
2011.12.18
Захват текста консольного приложения


15-1314945552
ClawClaw
2011-09-02 10:39
2011.12.18
Составление расписание в ВУЗе


2-1314889116
Gu
2011-09-01 18:58
2011.12.18
строковые константы


2-1315739001
я
2011-09-11 15:03
2011.12.18
ftGraphic, DBGrid,ClientDataSet,DataSource