{$mode delphi} в {$mode objfpc}

Вопросы программирования на Free Pascal, использования компилятора и утилит.

Модератор: Модераторы

{$mode delphi} в {$mode objfpc}

Сообщение Brainenjii » 14.03.2011 17:57:54

Ковыряю исходники ExtPascal на предмет решения всяких неприятных ситуаций, встретил такой код:
Код: Выделить всё
Function BWebGridClass.SelCheckResults(Method: TExtProcedure;
  Params: Array Of Const): TExtFunction;
Var
  Obj : TObject;
  MetName, ObjName : string;
Begin
  Obj := TMethod(Method).Data;
  MetName := Obj.MethodName(@Method);
  If Obj Is TExtObject Then
    ObjName := TExtObject(Obj).JSName;
...

где TExtOProcedure - procedure of object.
С {$mode delphi} собирается свободной, с {$mode objfpc} - не могу сообразить, где @, где ^ наставить (очень слаб в этом деле). Подскажите, как правильно будет переделать?
Аватара пользователя
Brainenjii
энтузиаст
 
Сообщения: 1351
Зарегистрирован: 10.05.2007 00:04:46

Re: {$mode delphi} в {$mode objfpc}

Сообщение Maxizar » 14.03.2011 21:26:04

Можно, что то почерпнуть тут: Система внутренних команд на основе published методов.
@ - это получение аддреса, для переменной это так, но получается что @Button1Click почему то не работает (или я что то напутал)
В FPC, получается, чтобы получить аддрес метода без использования MethodAddress(ProcName) а в лоб, тобишь средствами самого языка, нужно делать такие вот грабли:
Код: Выделить всё
showmessage(MethodName(TMethod(@Button1Click).Code))

И мне так кажется, что тут что то не чисто... Данный код в Delphi не работает... говорит не правильный переданный параметр.

^ - разименование указателя, тобишь получения данных на которые указывает указатель.


Так, что ждем более опытных в этом вопросе, сам уже наметил, где мне это может пригодиться... :D и хочется узнать, как все же получать аддреса, которые можно будет например вызывать в ассемблерном коде методом CALL или jmp. Тобишь без использования MethodAddress.
Так что присоединяюсь к вопросу. (Если Brainenjii Вы не против :oops: )
И если Вы знаете, напишите код и для Delphi, заранее спасибо :)...
Maxizar
постоялец
 
Сообщения: 385
Зарегистрирован: 20.03.2010 19:48:14

Re: {$mode delphi} в {$mode objfpc}

Сообщение Mr.Smart » 14.03.2011 22:49:57

Brainenjii, смыл здесь брать указатель от указателя?
Код: Выделить всё
MetName := Obj.MethodName(@Method);

Вам в функцию уже приходит указатель на метод.
Mr.Smart
долгожитель
 
Сообщения: 1796
Зарегистрирован: 29.03.2008 01:01:11
Откуда: из леса!


Вернуться в Free Pascal Compiler

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3

Рейтинг@Mail.ru