Как привести ссылочную переменную к экземляру класса..

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

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

Ответить
Аватара пользователя
beria
постоялец
Сообщения: 130
Зарегистрирован: 29.09.2016 07:57:13

Как привести ссылочную переменную к экземляру класса..

Сообщение beria »

То есть типа...

Код: Выделить всё

type
  class1 = class(TObject)
    procedure test;
  end; 

var
  c1: class1;
  p : pointer; //или p: TObject;
begin
  c1 := class1.Create;
  p := c1;
// и как-то  вызвать p.test;
         
Помню на С++ я такое делал, а как на FPC? Никто не в курсе ибо подобное очень сокращает код...
Аватара пользователя
beria
постоялец
Сообщения: 130
Зарегистрирован: 29.09.2016 07:57:13

Сообщение beria »

Дож писал(а):

Код: Выделить всё

class1(p).test;
Действительно элементарно. Спасибо. А я там уже стал заморачиваться определением адреса через прямое обращение к VMT)))))))
Аватара пользователя
Sharfik
энтузиаст
Сообщения: 837
Зарегистрирован: 20.07.2013 01:04:30

Сообщение Sharfik »

На всякий случай. Разные обороты с классами.

Код: Выделить всё

Tclass1 = class(TObject);
Tclass2 = class(Tclass1);

var
Tmp:TClass1;

Tclass2(Tmp).GoGo; // если процедура только в втором классе.

(Sender as Tclass2).GoGo; // 

if Sende.ClassName='TClass2' then
(Sender as Tclass2).GoGo; 

Ответить