Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
4-1219926981
tytus
2008-08-28 16:36
2011.12.18
Захват текста консольного приложения


2-1315648401
Pushok
2011-09-10 13:53
2011.12.18
При закрытии Delphi вылетает AV


15-1314390597
Юрий
2011-08-27 00:29
2011.12.18
С днем рождения ! 27 августа 2011 суббота


4-1252931571
MultIfleX
2009-09-14 16:32
2011.12.18
bluetooth


4-1232705413
WanderBuild
2009-01-23 13:10
2011.12.18
Как правильней получить список процессов?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский