Ver Mensaje Individual
  #6  
Antiguo 08-02-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Reputación: 29
Lepe Va por buen camino
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); // más o menos 
    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.
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita