El mié, 24-03-2010 a las 21:46 -0600, Mauricio Baeza escribió:
> El 24 de marzo de 2010 08:23, José Jesús <[email protected]> escribió:
> 
> > El mar, 23-03-2010 a las 16:46 -0500, Eivar Montenegro Mosquera
> > escribió:
> >
> > > Hola José,
> > > Puedes usar el siguiente código de ejemplo para leer un archivo texto
> > > caracter por caracter en java, espero que te sea de ayuda:
> > > [...]
> >
> >
> > Gracias Eivar,
> >
> > Al menos de momento tengo solucionado como leer el archivo troceándolo
> > cada 500 caracteres, con el código que me paso Mauricio en python.
> > Investigare esta alternativa que me pasas, aunque eso me lleva a
> > adentrarme en el mudo java y tengo que reconocer que desde el 95-98,
> > cuando java era un bebe que no lo he vuelto a tratar. Pero en fin, como
> > le dije a Mauricio si no se puede hacer con OOo Basic pues habrá que
> > buscar otra alternativa.
> > Como todos habéis podido intuir, no solo se trata de leer el fichero
> > cada 500 caracteres. para partirlo me hubiera bastado con un comando por
> > consola como:
> > sed -e 's/(.{500})/\1\n/g' prueba.txt > salida.txt
> >
> > Para resolver el problema completo y elegantemente para el usuario, será
> > necesario abrir un cuadro de dialogo para permitir que seleccione o
> > busque el archivo a tratar. Presentarlo de forma comprensible.
> > Permitirle modificar datos y generar el archivo final que tiene que ser
> > una sucesión continua de caracteres similar al de entrada.
> >
> > Si al final es de alguna utilidad prometo publicar la solución.
> >
> > Gracias a todos.
> > JJ
> >
> >
> Hola...
> 
> Todo lo que describes lo puedes hacer perfectamente desde OO Basic, excepto
> claro cargar el archivo completo, el cual lo hacemos llamando a la función
> de Python (desde OOo Basic) y terminas de nuevo con OOo Basic, pues para
> guardar el archivo no tienes la limitante del tamaño...
> 
> Saludos
> 
Tras unos días un poco liado, os haré un resumen final a modo de colofón
sobre este tema.

La macro que me paso Mauricio en python ha funcionado a la perfección. 
Tan solo unos detalles a tener en cuenta. 
El primero que efectivamente se puede portar directamente a Windows sin
tener que instalar nada, pero cuidado con la "ruta" del archivo. Si se
incluye la ruta completa del archivo con los caracteres de separación de
directorio "\", esto puede que no de errores si el nombre del archivo
empieza por un carácter alfabético pero generará un error si el nombre
del archivo comienza por un número. Parece que en este caso el
interprete toma la secuencia "\'número'", por ejemplo "\0", ó "\2",
etc... por un carácter de control y genera un error. Así pues en Windows
es mejor poner la ruta al archivo como: "\\directorio1\\directorio2\
\...", de este modo no hay riesgo de error.
Por otro lado, existe un problema con los caracteres especiales como la
"ñ", "Ñ". Cuando existe un carácter de este tipo el resultado es que el
carácter especial lo cuenta como doble y lee en realidad un carácter
menos (499 en lugar de 500). Si es en los primeros 500 caracteres, es
decir el primer registro, todos los registros siguientes aparecerán
desplazados un carácter. 
La solución a este problema la desconozco.

Habrá quien se pregunte, que o quien puede generar un fichero de datos
tan "particular", bueno pues es un formato que aquí en España se emplea
para transmisión de datos telemáticos fiscales con la administración.
Existe una publicación oficial y pública del formato del fichero, por si
alguien esta interesado. En la especificación oficial expresamente se
cita el carácter "Ñ" como el decimal 209 ó D1 en Hexadecimal. Cuando
envías el fichero un validador (parser) comprueba que el fichero este
correctamente construido. Ahí es donde se generan los problemas y la
necesidad de validar previamente el fichero. Prácticamente todos los
programas actuales de contabilidad y gestión generan estos ficheros
adecuadamente, pero en ocasiones te encuentras que alguien tiene un
programa tan antiguo que no lo hace o que la empresa debe declarar a la
agencia nacional pero también a la, o las autonómicas y así el desmadre
es mayor.

En cualquier caso creo que es muy instructivo tener que lidiar con un
caso así, desde el punto de vista docente. Yo al menos he aprendido
bastante.

Sigo investigando,... si existe un método de leer bytes (que seguro que
lo hay pero yo no he sido capaz de realizarlo) mediante OOo Basic y como
arreglar lo de las eñes, además de no escribiéndolas.

Gracias a todos,
JJ

P.D. Mauricio: al final no te envíe el fichero de muestra, por problemas
que no vienen al caso, creo que ya no es necesario, pero si te interesa
puedo enviártelo directamente.


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Responder a