Выполнение процедуры по адресуDelphi , Компоненты и Классы , Процедуры и функцииВыполнение процедуры по адресуАвтор: Peter Below
Ключом здесь является использование оператора @, располагаемого с левой части процедурной переменной. Он говорит компилятору: "Не волнуйтесь здесь о совместимости типов, просто присвойте полученный в правой части выражения адрес переменной в левой части выражения (и процедурные переменные являются переменными-указателями). Here's the translation of the text into Russian: Код-сниппет написан на языке Pascal и использует функцию GetProcAddress для получения адреса процедуры из динамической библиотеки (DLL). Вот разбивка каждого ряда:
1. Ключевым takeaway здесь является использование символа @ для дедерференции результата GetProcAddress. Это говорит компилятору не беспокоиться о совместимости типов между левой и правой сторонами выражения, а вместо этого просто присваивает значение правой стороны переменной F. Поскольку F - это переменная процедуры, она может хранить адрес памяти. Альтернативным решением является использование функции GetProcAddress для получения указателя на функцию и затем вызова этого указателя напрямую. Например:
Эта APPROACH более явна и avoids использование символа @. Однако она достигает того же результата: получение адреса процедуры из DLL и вызов этой процедуры с аргументами. В статье описывается использование оператора @ в Delphi для выполнения процедуры из динамической библиотеки, не учитывая типы параметров. Комментарии и вопросыМатериалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта. :: Главная :: Процедуры и функции ::
|
|||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |