J'ai un certain nombre d'enregistrements que je ne peux pas convertir en classes en raison de la limitation Delphi (tous utilisent des opérateurs de classe pour implémenter des comparaisons). Mais je dois passer pour les stocker dans une classe ne sachant pas quel type d'enregistrement j'utilise.Comment passer plusieurs enregistrements différents (pas de classe en raison de limitations delphi) à une fonction?
Quelque chose comme ceci:
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);
Maintenant, Delphi n'acceptent pas typecast d'enregistrement à TObject, et je ne peux pas les rendre les classes Delphi en raison de la limitation.
Tout le monde sait un moyen de passer différents enregistrements à une fonction et reconnaître leur type en cas de besoin, comme nous le faisons avec la classe:
if x is TMyClass then TMyClass(x) ...
???
Quelle version de Delphi? Delphi 2010 prend en charge RTTI sur les enregistrements. –