Ver Mensaje Individual
  #23  
Antiguo 18-02-2004
Majo Majo is offline
Miembro
 
Registrado: jun 2003
Posts: 43
Reputación: 0
Majo Va por buen camino
Este es el código para guardar y cargar los componentes de una form.

De cualquier manera de tanto ensayar y ensayar, hice el intento de guardar en un archivo un arreglo declarándolo así:

a:File of Array of integer;
y sale el siguiente error
[Error] WindowsDesigner.pas(107): Type 'dynamic array' needs finalization - not allowed in file type

pero cuando lo declaro así
a:File of Array[1..100] of integer;
al compilar no sale error

¿Tiene esto algo que ver con que Los componentes de la form no se guarden completamente?.

Mi gran problema es que realmente necesito en la propiedades arreglos.
!y vaya la contradicción ¡.... cuando declaro la propiedad como un arreglo dinámico no sale error, y cuando declaro la propiedad como un arreglo estático sale el error de que una propiedad no se puede declarar como arreglo


Código:
procedure TForm2.Load;
var
  Stream: TFileStream;
  i:Integer;
begin
   Form3.OpenDialog1.Execute;
   Stream := TFileStream.Create(Form3.OpenDialog1.FileName, fmOpenRead or fmShareDenyWrite);
  //Borre todo lo que hay en la form de diseño
  LimpiarForm;
  //Lee los componentes del archivo y lo inserta en la form de diseño
  try
    Stream.ReadComponent(Self);
  finally
    Stream.Free;
  end;
end;

procedure TForm2.Save;
var
  Stream: TFileStream;
begin
  Form3.SaveDialog1.Execute;
  Stream := TFileStream.Create(Form3.SaveDialog1.FileName, fmCreate);
  try
    Stream.WriteComponent(Self);
  finally
    Stream.Free;
  end;
end;

procedure TForm2.LimpiarForm;
var i,a:Integer;
begin
   a:=ComponentCount;
   for i:=0 to a-1 do
      Components[ComponentCount-1].Free;  
end;

Última edición por Majo fecha: 18-02-2004 a las 16:49:15.
Responder Con Cita