De casualidad vi otro detalle, que no tendría nada que ver con el problema anterior, en la parte:
Código Delphi
[-]
procedure TItemRegistros.Assign(Source: TPersistent);
begin
if Source is TRegistro then
FRegistro := TRegistro(Source)
else
inherited Assign(Source);
end;
Esta no es la idea de los métodos assign, la idea es que copie los valores no las referencias:
Código Delphi
[-]
procedure TItemRegistros.Assign(Source: TPersistent);
begin
if Source is TRegistro then
with TRegistro(Source) do
begin
FRegistro.RegName := RegName;
FRegistro.Registro.Assign(Registro);
end
else
inherited Assign(Source);
end;
Saludos!