Este hilo te aclarará más las cosas.
Fíjate en especial como funciona el método ReadPoints, primero agranda el array FPoints, después lee de archivo y asigna esos valores.
En realidad el problema no es la clase TActionsList, sino más bien TAction, que es la que se quiere guardar y rescatar. Quizás los tiros vayan por redefinir el Reader y Writer de TAction y ahora si implementamos:
Código Delphi
[-]
procedure TActionsList.SaveToFile(filename:string);
var S:TStream;
begin
s := TfileStream.Create(filename, fmCreate);
for i:= 0 To Flist.count -1 do
begin
s.WriteString(Flist[i]);
s.WriteComponent(Flist.Objects[i]);
end;
end;
procedure TActionsList.LoadFromFile(filename:string);
var S:TStream;
A:Taction;
str:string;
begin
s := TfileStream.Create(filename, fmOpenRead);
for i:= 0 To Self.count -1 do
begin
str := s.readstring;
A := Taction.Create;
A := s.ReadComponent(nil); Flist.AddObject(str, A);
end;
end;
Visto así, quien tiene que implementar el reader y Writer es el propio Action (que hereda de Tcomponent) para que delphi sepa como debe guardarlo en un archivo y como debe "reconstruir el Taction desde archivo".
Cita:
- De quien deberia heredar TActionList???
|
Viendolo así, puede derivar de TObject. TAction debe heredar de TPersistent o Tcomponet, quizás Tcomponent sea más completo.
Cita:
- Donde se le dice que salve y que carge, o lo hace automatico??????
|
Lo dicho, en un método llamado SaveToFile; se supone que lo llamarás antes de destruir el objeto ActionsList de memoria, o incluso en su propio destructor.
Cita:
- Existe otra manera de resolver mi problema???
|
Incluso mediante archivos .ini, pero será altamente engorroso guardar las propiedades y demás.
Cita:
- Cuando cargo del fichero voy a agregando a la lista objetos tipo TActions, no habra problema al llamar a estos objetos, ya que no reconoceran el tipo especializado que eran anteriormente
|
Precisamente por eso es TAction el que debe implementar la forma de guardar y recuperar de archivo, para que el resultado sea un TAction y no un TComponent.