Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Grabación de Arhivos Especiales (https://www.clubdelphi.com/foros/showthread.php?t=49131)

Esau 13-10-2007 21:59:54

Grabación de Arhivos Especiales
 
Saludos a todos... bueno les contare que estoy en un proyecto bastante interesante y muy bonito, pero a su vez es bastante complejo: les contare un poco mas:
Tengo una estructura jerárquica de objetos que tienen matrices dinámicas, propiedades y cosas así, lo que pretendemos es guardar en un archivo estos datos, pero no sabemos como implementar las rutinas para poder guardar y leer los datos. Es decir lo que queremos es que el objeto pueda leer y grabar todos sus datos que pueden ser matrices, propiedades, incluso objetos en archivos y poder cargarlos en memoria para tenerlos disponibles en tiempo de ejecución.
Alguien tiene alguna idea, estoy buscando información sobre como guardar archivos con datos complejos. Que no son estructurados.

Saludos cordiales,

Lepe 14-10-2007 10:39:15

Puedes buscar por TStream, TMemoryStream y TFileStream por el foro o internet.

Viene a ser archivos binarios con la estructura y forma que necesites. La estructura no es fija, puedes cambiarla dinámicamente.

Código Delphi [-]
var datos :TStream;
     valor1:integer;
begin
  datos := TMemoryStream.Create;
  datos.Write(valor1, sizeof(integer));
  if Valor1 = 1 then
    datos.write(buffer, sizeof(buffer));
  else
    datos.write(buffer2, sizeof(buffer2));

  datos.SaveTofile('c:\datos.dat');
  datos.Free;
end;
Como ves, primero guardas el valor1 y después dependiendo del valor que contiene se graba en el archivo una cosa u otra.

Al tiempo de leer se deben interpretar los datos de la misma forma.

Si son clases que heredan de TPersistent, revisa también los métodos SaveToStream, TFiler y TReader. Ello permitiría guardar el objeto completo a disco (como hace delphi con el .dfm, por ejemplo).

Saludos

Esau 15-10-2007 16:10:06

Ok
 
Ok muchas gracias revisare la informacionada relacionada a estos temas..
gracias

Esau 15-10-2007 18:15:03

Hola Lepe, puedes darme algunos links sobre grabar componentes en Disco.
saludos

Esau 15-10-2007 23:41:16

intento hacer Esto
 
Saludos Amigos:
Intento hacer esto , no se si es una buena idea. ¿ Uds que opinan ?
creo un componente derivandolo de TComponent
Código Delphi [-]
  TPrueba = class(TComponent)
    public
      FFilas : Integer;
      FColumnas : Integer;
      FMatrix : Array of Array of Double;
      Dato : Integer;
      Constructor Crear(Filas, Columnas : Integer);
      Destructor Destroy; Override;
      procedure Cargar(AString : TStrings);
     ..... //mas propiedades y Eventos
  End;

// luego al momento de crear el Objeto efectuo esto

procedure TForm4.Button1Click(Sender: TObject);
var
  Prueba: TPrueba;
  T : TFileStream;
begin
 Prueba := TPrueba.Create(Nil);
 Prueba.Crear(2,50); //Aqui es donde le digo que el objeto cree una matriz de numero reales de 2 *50 el procedimiento se encarga de llenar la matriz con datos aleatorios solo de prueba
 Prueba.Dato := 5; // un dato extra 
 Prueba.Cargar(ListBox1.Items); //muestro el contenido de la matriz en un listbox
 T := TFileStream.Create('C:\compo.ehv',fmCreate);
 T.WriteComponent(Prueba);
 T.Free;
 Prueba.Destroy;
end;

La idea es crear el Componente con una matriz de Numeros reales (n * m) y poder guardarlos en un archivo...
Posteriormente poder leerlos, pero cuando habro el Archivo solo aparece la clase (TPrueba) con unos Simbolos mas, pero no veo la matriz por ningun lado.
quizas estoy pasando por alto algo importante al momento de guardar el componente, pero me gustaria que le den una mirada a mi codigo para despejar mis dudas..
otra Pregunta: ¿Puedo guardar dentro un archivo un componente que contenga mas objetos y no necesariamente derivados de TComponent?

Saludos y gracias de Antemano...

Lepe 16-10-2007 12:32:30

Revisa este mensaje o el hilo completo.

Saludos


La franja horaria es GMT +2. Ahora son las 00:35:10.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi