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 20-04-2005
Avatar de n3mohack
n3mohack n3mohack is offline
Miembro
 
Registrado: may 2004
Ubicación: Chile-Stgo-Huechuraba
Posts: 41
Poder: 0
n3mohack Va por buen camino
Lightbulb programa para validar formato de archivo de texto

Hola colegas todos ,

Me gustaría recibir opiniones, ideas, etc. acerca de como realizar un programita, lo más simple posible, para validar el formato de un archivo de texto, eso si, sin considerar utilizar ningún sistema de BD. La idea es que este programita sea flexible respecto al formato que debe validar (o sea que no esté en duro en el código), para así poder pasarle cualquier formato...
Lo que debe hacer es,

.- obtener formato x a validar (no hay restricción respecto a la forma de obtención del formato, excepto la no utilización de tablas)
.- Cargar un archivo plano (con un formato x definido)
.- visualizar su contenido en una grilla (opcional)
.- Entregar un informe (no hay restricción respecto a la forma de presentación),
donde se indique los errores que contiene el archivo de origen respecto a el formato x contra el cual se validó.

eso!!

( podríamos hacer un concurso!! : Þ )

Saludos y atento a sus comentarios!!..
Responder Con Cita
  #2  
Antiguo 20-04-2005
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Pues en un principio se utilizarían las opciones normales de lectura de ficheros de texto.

Un parámetro puede ser la longitud de la línea(Registro), que se supone que es fija, por lo tanto leer línea comprobar ancho.

y luego con una matríz dinámica.... construida de acuerdo a los parámetros, número de campos y ancho de cada uno, podríamos utilizar Copy apuntando al principio de campo y leyendo x caracteres.

También puedes valerte de una StringList, finalmente pasarlos a un StringGrid sería lo más simple.

Bueno espero te sirva como idea inicial.

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #3  
Antiguo 20-04-2005
Avatar de n3mohack
n3mohack n3mohack is offline
Miembro
 
Registrado: may 2004
Ubicación: Chile-Stgo-Huechuraba
Posts: 41
Poder: 0
n3mohack Va por buen camino
Lightbulb

Correcto, algo así... la cuestión es "como" pasarle el formato a validar..
ej. que cargue un archivo delimitado donde se indique:
- campo->tipo_dato->posición->largo, etc.

La idea es que sea de la manera más simple, flexible y con power...

opinen!!..
Responder Con Cita
  #4  
Antiguo 20-04-2005
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Podemos crear un arreglo de controles:
Código Delphi [-]
 procedure TfrDlgConcursos.FormActivate(Sender: TObject);
 begin
 aCod[1]:=@DblkCod1;
 aCod[2]:=@DblkCod2;
 aCod[3]:=@DblkCod3;
 aCod[4]:=@DblkCod4;
 aCod[5]:=@DblkCod5;
 aCod[6]:=@DblkCod6;
 aCod[7]:=@DblkCod7;
 aCod[8]:=@DblkCod8;
 
 aNom[1]:=@EdNom1;
 aNom[2]:=@EdNom2;
 aNom[3]:=@EdNom3;
 aNom[4]:=@EdNom4;
 aNom[5]:=@EdNom5;
 aNom[6]:=@EdNom6;
 aNom[7]:=@EdNom7;
 aNom[8]:=@EdNom8;
 
 aMod[1]:=@EdMod1;
 aMod[2]:=@EdMod2;
 aMod[3]:=@EdMod3;
 aMod[4]:=@EdMod4;
 aMod[5]:=@EdMod5;
 aMod[6]:=@EdMod6;
 aMod[7]:=@EdMod7;
 aMod[8]:=@EdMod8;
 
 aKms[1]:=@EdKms1;
 aKms[2]:=@EdKms2;
 aKms[3]:=@EdKms3;
 aKms[4]:=@EdKms4;
 aKms[5]:=@EdKms5;
 aKms[6]:=@EdKms6;
 aKms[7]:=@EdKms7;
 aKms[8]:=@EdKms8;
 end;
 
 Procedure Mostrar(x:Integer);
 var
 n:Integer;
 begin
  For n:=1 to x do
  begin
    if n <= x then
    begin
    aCod[n]^.Visible:=True;
    aNom[n]^.Visible:=True;
    aMod[n]^.Visible:=True;
    aKms[n]^.Visible:=True;
    end
    else
    begin
    aCod[n]^.Visible:=False;
    aNom[n]^.Visible:=False;
    aMod[n]^.Visible:=False;
    aKms[n]^.Visible:=False;
    end;
  end;
 
 end;

Dependiendo cuantos campos nos pidan ponemos controles para verificar el tipo de dato esto puede hacerse por ejemplo con Combox que muestran opciones tales, como número, Fecha, texto....

Luego podemos intentar conversiones con Try...Except como es lógico y lanzar errores cuando el contenido no sea apropiado, pero así como es fácil validar por ejemplo un Q19, hacer algo para validad cualquier cosa lo veo complicado.

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #5  
Antiguo 21-04-2005
Avatar de __hector
[__hector] __hector is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Santo Domingo, Rep. Dom.
Posts: 1.075
Poder: 23
__hector Va por buen camino
no se lo del grid ni nada de eso, pero que te parece utilizar un parser para validar el archivo? Los hay muy efectivos, como el goldparser y el javacc o yacc. Si no te molesta aprender algo de automatas, teoria de compiladores y notacion BNF, creo que te vendria como anillo al dedo (ademas de que, el cambio de reglas para el parsing es sumamente simple)
__________________
Héctor Geraldino
Software Engineer
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


La franja horaria es GMT +2. Ahora son las 16:52:40.


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