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 14-09-2011
Taburiente Taburiente is offline
Miembro
 
Registrado: may 2006
Posts: 26
Poder: 0
Taburiente Va por buen camino
Ficheros texto

Hola,

Primero decir que soy un aprendiz en esto de >Delphi, mi poca experiencia esta mas dirigida a base de datos y mi experiencia en ficheros planos es escaso por lo que he osado ( dado mi urgencia) a pedir ayuda en este foro. No quiero ni pretendo abusar de nada ni de nadie pero necesito orientación de como conseguir lo siguiente:

Partiendo de fichero "LISTADO_FICHERO.txt" obtener y nombrar tantos ficheros como cabeceras tenga en contenido (ver ejemplo adjunto) así como la estructura que tiene dichos ficheros. Después ya tendría que realizar otras operaciones pero eso creo que si sabría como hacerlo, pero para ello necesito solventar este primer paso.

Gracias anticipada por cualquier tipo de ayuda.


Saludos
Archivos Adjuntos
Tipo de Archivo: zip Ficheros.zip (1,6 KB, 7 visitas)
Responder Con Cita
  #2  
Antiguo 14-09-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Taburiente.

Código Delphi [-]
procedure GenerarArchivos(const Ruta: string; const Nombre: string);
var
  Origen, Destino: TextFile;
  Linea: string;
begin
  Assign(Origen,Ruta+Nombre);
  Reset(Origen);
  while not Eof(Origen) do
  begin
    Readln(Origen, Linea);
    if Pos('.afp',Linea) <> 0 then
    begin
      // poner extensión .txt
      Assign(Destino,Ruta+Copy(ExtractFileName(Linea),1,Length(Linea)-3)+'TXT');
      Rewrite(Destino);
      Writeln(Destino,'CODE_LIST JAZZTEL.PAGO11M1'+Linea);
      Writeln(Destino,'#CMD app load_job_conf_file 50');    
      Writeln(Destino,'------------------------------------');
      Readln(Origen, Linea);
      while (Pos('.afp',Linea)=0)and(Pos('-',Linea)=0) do
      begin
        Writeln(Destino,Linea);
        Readln(Origen, Linea);
      end;
      Writeln(Destino,'-------------------------------------');
      CloseFile(Destino);
    end;
  end;
  CloseFile(Origen);
end;
Hubo datos que agregué a mano por que no existen en el archivo orígen y otros que omití por el mismo motivo. Pero en líneas generales dá el formato que solicitas a cada uno de los archivos generados:
Código:
CODE_LIST JAZZTEL.PAGO11M1PSEP11M01_3C1DS1.PP001.a00.afp
#CMD app load_job_conf_file 50
------------------------------------
193759412
193812934
193838063
193865745
-------------------------------------
Datos agregados a mano:
Código:
CODE_LIST JAZZTEL.PAGO11M1PSEP11M01_3C1DS1.PP001.a03.afp
#CMD app load_job_conf_file 50
Datos omitidos:
Código:
MP	1	1	XXX
Llamada al procedimiento:
Código Delphi [-]
  GenerarArchivos('C:\TEMP\', 'LISTADO_FICHERO.TXT');

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 14-09-2011 a las 16:42:33.
Responder Con Cita
  #3  
Antiguo 14-09-2011
Taburiente Taburiente is offline
Miembro
 
Registrado: may 2006
Posts: 26
Poder: 0
Taburiente Va por buen camino
Hola ecfisa,

Primero de todo muchísimas gracias, no solo por tu gran ayuda, sino por la rapidez de la misma, me quito el sombrero.

Luego decirte que unos de mis muchos problema es precisamente incluir en los ficheros que genero los datos que tu me has omitido:


Cita:
MP 1 1 XXX
MP 2 2 XXX
MP 3 3 XXX
Es importante incluir dicha información para que luego me lo reconozca otra aplicación que necesita dicha estructura. ¿ que tal lo ves ?


Gracias
Responder Con Cita
  #4  
Antiguo 14-09-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Taburiente.
Cita:
Luego decirte que unos de mis muchos problema es precisamente incluir en los ficheros que genero los datos que tu me has omitido
Correcto, pero ¿ De donde salen esos datos ? por que en el archivo que adjuntaste, LISTADO_FICHERO.txt, no existen y de la nada no se pueden fabricar...

Ahora, si se trata sólo de poner la cadena textualmente, bastaría con agregarlo en la línea:
Código Delphi [-]
...
      while (Pos('.afp',Linea)=0)and(Pos('-',Linea)=0) do
      begin
        Writeln(Destino, 'MP  1  1  XXX' +Linea); // aquí se agrega la cadena 
        Readln(Origen, Linea);
      end;
...
Al código anterior.


Un saludo.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 14-09-2011 a las 18:00:33. Razón: Agregar comentario
Responder Con Cita
  #5  
Antiguo 14-09-2011
Taburiente Taburiente is offline
Miembro
 
Registrado: may 2006
Posts: 26
Poder: 0
Taburiente Va por buen camino
Hola de nuevo ecfisa,

Efectivamente, eso datos no están en el fichero origen pero si tienen que estar en los ficheros originados y por lo tanto necesito agregarlos y que como puedes comprobar empiezan por MP y termina en XXX y en el medio dos colunnas que es un cosecutivo desde 1 hasta xxxxxxxxxx dependiendo del numero de registros.

Muchas gracias por tu tiempo y esfuerzo


Saludos

Última edición por Taburiente fecha: 14-09-2011 a las 18:06:57.
Responder Con Cita
  #6  
Antiguo 14-09-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola de nuevo.
Cita:
Partiendo de fichero "LISTADO_FICHERO.txt" obtener y nombrar tantos ficheros como cabeceras tenga en contenido (ver ejemplo adjunto) así como la estructura que tiene dichos ficheros. Después ya tendría que realizar otras operaciones pero eso creo que si sabría como hacerlo, pero para ello necesito solventar este primer paso
Creo que te quedaste corto con las explicaciones...

Pero a ver... Si no te entiendo mál, queres que haya un contador parcial para las líneas de cada archivo generado y uno general para el total de ellas ('xxxxxxxxxx').

Si es así, es muy sencillo modificar el código anterior para que lo haga:
Código Delphi [-]
procedure GenerarArchivos(const Ruta: string; const Nombre: string);
var
  Origen, Destino: TextFile;
  Linea: string;
  ContGral: Int64;      // Contador general de líneas
  ContLinea: Integer; // Contador parcial de líneas
begin
  Assign(Origen,Ruta+Nombre);
  Reset(Origen);
  ContGral:= 1;
  while not Eof(Origen) do
  begin
    Readln(Origen, Linea);
    if Pos('.afp',Linea) <> 0 then
    begin
      ContLinea:= 1;
      Assign(Destino,Ruta+Copy(ExtractFileName(Linea),1,Length(Linea)-3)+'TXT');
      Rewrite(Destino);
      Writeln(Destino,'CODE_LIST JAZZTEL.PAGO11M1'+Linea);
      Writeln(Destino,'#CMD app load_job_conf_file 50');
      Writeln(Destino,'------------------------------------');
      Readln(Origen, Linea);
      while (Pos('.afp',Linea)=0)and(Pos('-',Linea)=0) do
      begin
        Writeln(Destino,Format('%s %d %d %d %s',['MP', ContLinea, ContLinea, ContGral, Linea]));
        Readln(Origen, Linea);
        Inc(ContLinea);
        Inc(ContGral);
      end;
      Writeln(Destino,'-------------------------------------');
      CloseFile(Destino);
    end;
  end;
  CloseFile(Origen);
end;
Los archivos generados, basados en el archivo que enviaste, (sin ajustar la tabulación) quedarían así:
Código:
CODE_LIST JAZZTEL.PAGO11M1PSEP11M01_3C1DS1.PP001.a00.afp
#CMD app load_job_conf_file 50
------------------------------------
MP 1 1 1 193759412
MP 2 2 2 193812934
MP 3 3 3 193838063
MP 4 4 4 193865745
-------------------------------------

CODE_LIST JAZZTEL.PAGO11M1PSEP11M01_3C1DS1.PP001.a01.afp
#CMD app load_job_conf_file 50
------------------------------------
MP 1 1 5 194480436
MP 2 2 6 194482282
MP 3 3 7 194485890
MP 4 4 8 194486962
-------------------------------------

CODE_LIST JAZZTEL.PAGO11M1PSEP11M01_3C1DS1.PP001.a02.afp
#CMD app load_job_conf_file 50
------------------------------------
MP 1 1 9 194515253
MP 2 2 10 194515448
MP 3 3 11 194521818
MP 4 4 12 194522927
MP 5 5 13 194524611
-------------------------------------
De todas maneras no me queda muy en claro que papel juegan los dos números posteriores a 'MP'...

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 14-09-2011 a las 18:26:23.
Responder Con Cita
  #7  
Antiguo 14-09-2011
Taburiente Taburiente is offline
Miembro
 
Registrado: may 2006
Posts: 26
Poder: 0
Taburiente Va por buen camino
Hola amigo

Ya te considero un amigo despues de toda tu ayuda


Código:
Creo que te quedaste corto con las explicaciones
Perdona si no me explique bien, creía que con los ficheros ejemplos y me explicación seria suficiente, pero veo no no fuy lo suficientemente habil. lo siento.


En cuanto a tu codigo solo tendre que cambiar la siguiente linea:

Código:
Writeln(Destino,Format('%s %d %d %d %s',['MP', ContLinea, ContLinea, ContGral, Linea])
por la siguiente:

Código:
Writeln(Destino,Format('%s %d %d %d %s',['MP', ContLinea, ContLinea, XXX, Linea]));
puesto que no necesito el contador general si no precisamente XXX.

Por lo demás todo perfecto.

Gracias por tu inestimada ayuda, prometo ponerme las pilas con esto de los ficheros.

Saludos
Responder Con Cita
  #8  
Antiguo 14-09-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
De nada Taburiete, me alegro haber podido ayudarte.

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
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
Ficheros de texto !!! Ledian_Fdez C++ Builder 4 17-02-2010 09:06:06
Pasar ficheros binarios a texto PTW Varios 13 01-06-2007 21:56:22
Comandos especiales {$H} en ficheros de texto morodo Lazarus, FreePascal, Kylix, etc. 0 27-01-2007 22:10:17
Correo Web y Ficheros de Texto. marcoszorrilla Varios 29 06-09-2006 22:51:55
Tema: Ficheros de texto Tonio Varios 5 07-05-2003 15:56:24


La franja horaria es GMT +2. Ahora son las 03:22:32.


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