Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 13-10-2007
Esau Esau is offline
Miembro
 
Registrado: may 2003
Ubicación: Canto Rey
Posts: 140
Poder: 21
Esau Va por buen camino
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,
Responder Con Cita
  #2  
Antiguo 14-10-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
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
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #3  
Antiguo 15-10-2007
Esau Esau is offline
Miembro
 
Registrado: may 2003
Ubicación: Canto Rey
Posts: 140
Poder: 21
Esau Va por buen camino
Ok

Ok muchas gracias revisare la informacionada relacionada a estos temas..
gracias
Responder Con Cita
  #4  
Antiguo 15-10-2007
Esau Esau is offline
Miembro
 
Registrado: may 2003
Ubicación: Canto Rey
Posts: 140
Poder: 21
Esau Va por buen camino
Hola Lepe, puedes darme algunos links sobre grabar componentes en Disco.
saludos
Responder Con Cita
  #5  
Antiguo 15-10-2007
Esau Esau is offline
Miembro
 
Registrado: may 2003
Ubicación: Canto Rey
Posts: 140
Poder: 21
Esau Va por buen camino
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...
Responder Con Cita
  #6  
Antiguo 16-10-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Revisa este mensaje o el hilo completo.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Comando like con caracteres especiales comba SQL 2 25-05-2007 19:17:01
Sustitucion de Caracteres Especiales pzhero Firebird e Interbase 1 24-04-2007 19:32:15
Caracteres especiales en componentes nazosoto Varios 7 09-08-2006 13:30:32
Conversion de caracteres especiales JCarlosas Varios 0 13-06-2006 23:26:18
Caracteres especiales Scotty_thedog Impresión 2 15-08-2004 10:53:54


La franja horaria es GMT +2. Ahora son las 11:26:18.


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
Copyright 1996-2007 Club Delphi