FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
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. |
#2
|
||||
|
||||
Majo
Por favor utiliza la etiqueta [ code ] (Puedes ver instrucciones para usarla en el enlace de mi firma) y te agradecería que edites por lo menos este último mensaje para darle formato al código. Es muy pesado leer código sin indentar. // Gracias |
#3
|
||||
|
||||
¡Caray! Hasta pena me da ¡Con negritas y todo!
Vamos a ver, ¿revisaste el código de TStrings como te propuso delphi.com.ar? Propiedades de tipo arreglo dinámico, aunque sí pueden publicarse como ya nos dijo delphi.com.ar no se guardan en automático porque Delphi no sabe cómo hacerlo y hay que darle su ayudadita usando DefineProperties para decirle a Delphi qué propiedad queremos almacenar y con qué métodos (uno para leer los datos y otro para guardarlos). Sin embargo pienso que quizá nos estemos complicando demasiado ya que me parece que la mayor parte de los datos que deseas guardar son de tus propias componentes de manera que no es mucha ayuda utilizar el mecanismo integrado de Delphi. Creo que en tu lugar yo intentaría más por trabajar en la parte de guardarlas tú mismo. Quizá usando Collections como dice delphi.com.ar ya que además piensa que el mecanismo de Delphi no está pensado para muchos datos y quizá no sea muy eficiente. Otra posibilidad sería que usaras una base de datos para almacenar los datos. // Saludos |
#4
|
||||
|
||||
Cita:
PD: Vean mi mensaje anterior, pues me tomé el trabajo de hacer un ejemplo por favor no lo desperdicien!!
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla. |
#5
|
||||
|
||||
¡Uy! Disculpe usted.
Me fuí por el lado del reader y writer. Y sí, ya ví tu ejemplo (lo hice inmediatamente de que pusiste el mensaje anterior pero después de que escribí el último, no me había dado cuenta, sorry!) // Saludos |
#7
|
||||
|
||||
delphi.com.ar
Hoy no es mi día. Lo que pusiste en tu página es un ejemplo de cómo usar la componente que, supongo, viene en la unidad ArrayDemo. ¿Esa la escribimos nosotros o te olvidaste de ponerla? // Saludos |
|
|
|