Мастера DELPHI, Delphi programming community Рейтинг@Mail.ru Титульная страница Поиск, карта сайта Написать письмо 
| Новости |
Новости сайта
Поиск |
Поиск по лучшим сайтам о Delphi
FAQ |
Огромная база часто задаваемых вопросов и, конечно же, ответы к ним ;)
Статьи |
Подборка статей на самые разные темы. Все о DELPHI
Книги |
Новинки книжного рынка
Новости VCL
Обзор свежих компонент со всего мира, по-русски!
|
| Форумы
Здесь вы можете задать свой вопрос и наверняка получите ответ
| ЧАТ |
Место для общения :)
Орешник
Коллекция курьезных вопросов из форумов
Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / rsdn.org

 
Чтобы не потерять эту дискуссию, сделайте закладку « предыдущая ветвь | форум | следующая ветвь »

Метод процедуры


dmk ©   (30.07.19 16:24

Всем привет. Как получить корректный метод процедуры?
Выдает [dcc64 Error] some.pas(722): E2036 Variable required

На ассемблере все получается без проблем:

function TClass.MethodA: TMethod;
asm
 lea rax, ProcedureA
 mov [Result.Code], rax
 mov [Result.Data], self
end;


На языке не получается присвоить адрес процедуры объекта:

function TClass.MethodB: TMethod;
begin
 Result.Code := @ProcedureB; //<- Здесь ошибка!
 Result.Data := @Self;
end;


dmk ©   (30.07.19 20:46[1]

Все, вопрос решен. Если кому интересно:

type
 TProcedureA = procedure(A, B: Pointer) of object;

function TClass.MethodA: TMethod;
var
 A: TProcedureA;

begin
 A := ClassProcedureA;
 Result := TMethod(A);
end;


версия для печати

Написать ответ

Ваше имя (регистрация  E-mail 







Разрешается использование тегов форматирования текста:
<b>жирный</b> <i>наклонный</i> <u>подчеркнутый</u>,
а для выделения текста программ, используйте <code> ... </code>
и не забывайте закрывать теги! </b></i></u></code> :)


Наверх

  Рейтинг@Mail.ru     Титульная страница Поиск, карта сайта Написать письмо