Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 25-06-2006
miquellg miquellg is offline
Miembro
 
Registrado: abr 2005
Posts: 46
Poder: 0
miquellg Va por buen camino
Manejo de tipos

Hola compañeros,

Tengo una duda con la manipulación de estructuras que he creado en un programa, no creo que sea difícil pero soy nuevo y encuentro la solución.

Bueno, tengo un programa que debe leer registros de un fichero de texto con un formato para el cuál he creado la siguiente estructura:

Código Delphi [-]
type
  TQ19Registro = packed Record
    CodReg    : string[2];
    CodDat    : string[2];
    Nif          : String[9];
    Fecha      : string[6];
end;

Puedo leer del fichero de entrada y volcar la información del registro leido sobre la estructura creada? Cómo?

Después de trabajar la información creo 2 tipos de registros de salida (de la misma longitud) para grabarlos en otro fichero de texto:

Código Delphi [-]
type
  TQ32Reg1 = packed Record
    CodReg     : string[2];
    CodOper   : string[2];
    Filler1       : string[2];
    Info         : string[6];
end;

type
  TQ32Reg2 = packed Record
    CodReg     : string[2];
    CodOper   : string[2];
    CodPais    : string[2];
    Info2        : string[6];
end;

Puedo grabar directamente las diferentes estructuras creadas en un fichero de texto (*.txt) de salida? Cómo?

(los ficheros de trabajo están definidos como TextFile)

Gracias por la colaboración.

Última edición por dec fecha: 25-06-2006 a las 19:26:57.
Responder Con Cita
  #2  
Antiguo 26-06-2006
Sinaloense Sinaloense is offline
Miembro
 
Registrado: oct 2003
Posts: 139
Poder: 21
Sinaloense Va por buen camino
Tendrías que declarar el archivo de acuerdo al tipo:

Código Delphi [-]
type
  TQ32Reg1 = packed Record
    CodReg     : string[2];
    CodOper   : string[2];
    Filler1       : string[2];
    Info         : string[6];
end;

type
  TQ32Reg2 = packed Record
    CodReg     : string[2];
    CodOper   : string[2];
    CodPais    : string[2];
    Info2        : string[6];
end;

var
   Archivo1:File of TQ32Reg1;
   Archivo2:File of TQ32Reg2;
   Estructura1:TQ32Reg1;
   Estructura2:TQ32Reg2;

begin
    Assign(Archivo1,'algunaarchivo1');
    Assign(Archivo2,'algunaarchivo2');
    Reset(Archivo1);
    Reset(Archivo2);
    Read(Archivo1,Estructura1);
    Read(Archivo2,Estructura2);

    // Despues manipulas la Estructura a tu gusto    
    //y
    //Para escribir

    Write(Archivo1,Estructura1);  
    Write(Archivo2,Estructura2);
    
    CloseFile(Archivo1); 
    CloseFile(Archivo2); 
end;
Responder Con Cita
  #3  
Antiguo 26-06-2006
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Aqui tienes un ejemplo con TFileStream de como guardarlo todo en un mismo archivo. No es un archivo de texto.

El problema es que debes saber en qué orden se han escrito los registros en el archivo, para recuperar los tipos de datos. Se puede mejorar guardando una marca que indique qué tipo de registro viene a continuación, y entonces, leer las variables con ese Tipo de registro; así salvamos el problema anterior.

No lo he incluido en el proyecto porque no sé si es lo que quieres, ya nos comentarás, sería algo así:
Código Delphi [-]
var marca :integer;
     u: TQ19Registro;
     d: TQ32Reg1;
begin
F.Read(marca, Sizeof(marca));
if Marca = 1 then
  F.Read(u, Sizeof(TQ19Registro))
else if marca = 2 then
  F.Read(d, SizeOf(TQ32Reg1))
else.....
Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.

Última edición por Lepe fecha: 10-10-2007 a las 20:58:14.
Responder Con Cita
  #4  
Antiguo 26-06-2006
miquellg miquellg is offline
Miembro
 
Registrado: abr 2005
Posts: 46
Poder: 0
miquellg Va por buen camino
Gracias Lepe por la información,
pero con tu ejemplo me aparecen 2 nuevos problemillas:
1- En el fichero de salida, antes de cada campo me aparece un carácter extraño.
2- Cómo escribo en el fichero el Salto de linea?

Gracias a todos.
Responder Con Cita
  #5  
Antiguo 26-06-2006
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Como dije, la salida es un archivo binario, no es de texto y no está pensado que se pueda modificar con el Bloc de Notas (haría fallar el programa).

Cita:
Bueno, tengo un programa que debe leer registros de un fichero de texto con un formato para el cuál he creado la siguiente estructura:
Despues de lo comentado, parece que el fichero como tal, no es un Fichero de registros, sino un fichero de texto llano, que lo lees a trozos y los metes en esos registros (tipo record) que has creado.

Sería bueno que pusieras un trozo del archivo a leer, y despues comentar qué quieres hacer con él, sin entrar en detalles de implementación, algo así como:

"Quiero leer el archivo, mantenerlo en memoria, poder hacerle modificaciones y despues guardarlo en un sólo fichero de texto, separados por comas cada campo, que se puedan modificar con el Bloc de notas ."

Si el fichero de entrada es texto plano (sin carácteres extraños) y los de salida tambien han de ser iguales, será más útil un TStringList.

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

Última edición por Lepe fecha: 26-06-2006 a las 15:49:50.
Responder Con Cita
  #6  
Antiguo 27-06-2006
miquellg miquellg is offline
Miembro
 
Registrado: abr 2005
Posts: 46
Poder: 0
miquellg Va por buen camino
Gracias por tu colaboracion Lepe.
Así lo haré.
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
Tipos de salarios Tomás Humor 1 21-01-2005 13:22:50
Bibliotecas de Tipos. jplj OOP 0 05-10-2004 12:17:07
... 100 tipos... Jure Humor 0 18-03-2004 14:24:30
Conversiones de tipos andre Varios 7 13-01-2004 08:24:22
Tipos de TEXTO esquerda21 Varios 2 03-12-2003 09:27:57


La franja horaria es GMT +2. Ahora son las 17:36:50.


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