Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   programa para validar formato de archivo de texto (https://www.clubdelphi.com/foros/showthread.php?t=20628)

n3mohack 20-04-2005 20:43:32

programa para validar formato de archivo de texto
 
Hola colegas todos :D ,

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!! :p : Þ )

Saludos y atento a sus comentarios!!.. ;)

marcoszorrilla 20-04-2005 21:33:44

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.

n3mohack 20-04-2005 21:52:41

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!!..

marcoszorrilla 20-04-2005 21:59:13

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.

__hector 21-04-2005 00:27:00

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)


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

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