У меня есть ряд записей, которые я не могу преобразовать в классы из-за ограничений 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 не принимает typecast из записи вTObject, и я не могу сделать их классами из-за ограничения Delphi.
Любой знает способ передачи различных записей в функцию и распознавания их типа при необходимости, как мы делаем с классом:
if x is TMyClass then TMyClass(x) ...
???