PDA

Ver la Versión Completa : programa para validar formato de archivo de texto


n3mohack
20-04-2005, 20:43:32
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:

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)