У меня есть ряд записей, которые я не могу преобразовать в классы из-за ограничения Delphi (все они используют операторы класса для реализации сравнений). Но я должен пройти, чтобы сохранить их в классе, не зная, какой тип записи я использую.Как передать несколько разных записей (не класс из-за ограничений delphi) функции?
Что-то вроде этого:
type R1 = record
begin
x :Mytype;
class operator Equal(a,b:R1)
end;
type R2 = record
begin
y :Mytype;
class operator Equal(a,b:R2)
end;
type Rn = record
begin
z :Mytype;
class operator Equal(a,b:Rn)
end;
type TC = class
begin
x : TObject;
y : Mytype;
function payload (n:TObject)
end;
function TC.payload(n:TObject)
begin
x := n;
end;
program:
c : TC;
x : R1;
y : R2;
...
c := TC.Create():
n:=TOBject(x);
c.payload(n);
Теперь Delphi не принимают приведение типа от записи к TObject, и я не могу сделать их классы из-за ограничений Delphi.
Любой знает способ передать различные записи в функцию и распознать их тип, когда это необходимо, как и мы с классом:
if x is TMyClass then TMyClass(x) ...
???
Какая версия Delphi? Delphi 2010 поддерживает RTTI для записей. –