jsbsan   01-08-2021, 20:02
#1
Os dejo una pequeña herramienta que he hecho para unir ficheros de texto plano.


Código fuente:
https://github.com/jsbsan/unirficherostexto
tincho   01-08-2021, 21:00
#2
Hola Julio, vi el video y esta bien explicado.
Gracias por compartir.
Saludos.

1 Saludo.
Shordi   02-08-2021, 09:29
#3
Buena iniciativa que en eso de seleccionar ficheros sin un patrón claro lo visual es lo más rápido. Tan sólo le pongo una pega, pequeñita eso sí. En Gambas el tamaño de una variable tipo string está limitado por la cantidad de memoria disponible. La selección de archivos puede llegar a superar esa cantidad, con lo que puedes llegar a bloquear el programa, cuando menos.
Yo cambiaría la suma progresiva de ficheros sobre un fichero temporal en la partición gorda del disco duro que tengas (no en tmp, que suele ser pequeñita).

Saludos.

No podemos regresar
portaro   03-08-2021, 22:48
#4
Big Grin Gracias por compartir.
jsbsan   08-08-2021, 19:10
#5
Shordi
Cita:"En Gambas el tamaño de una variable tipo string está limitado por la cantidad de memoria disponible. La selección de archivos puede llegar a superar esa cantidad, con lo que puedes llegar a bloquear el programa, cuando menos."
¿como puedo ver en gambas3 cuanto espacio me queda libre mientras ejecuto el programa?
Recuendo que los antiguos BASIC tenian comandos para saber cuanto tenias de memoria "libre", pero en gambas3, no se me ha planteado ese problema.
Cita:"Yo cambiaría la suma progresiva de ficheros sobre un fichero temporal en la partición gorda del disco duro que tengas (no en tmp, que suele ser pequeñita)."

Prepararé una versión con esa mejora. Mis archivos son muy pequeños (de menos de 100 KB) y no creo que se me de el caso de que me quede sin espacio.

Gracias por los comentarios.

Saludos

Julio
tincho   09-08-2021, 09:29
#6
(08-08-2021, 19:10)jsbsan escribió: ¿como puedo ver en gambas3 cuanto espacio me queda libre mientras ejecuto el programa?
No lo se, pero podrías hacer un experimento agregando caracteres a una variable tipo String e imprimiendo el numero de orden en la terminal del ide.
Sinceramente nunca, nunca, nunca, me tope con una limitación en la cantidad de caracteres que le puedo asignar a una variable String, que tal vez la tenga pero he manejado archivos de texto enormes y sin inconvenientes.
Saludos.

1 Saludo.
Shordi   09-08-2021, 10:00
#7
En /proc/meminfo tienes toda la información disponible. Con algo así como

cat /proc/meminfo | grep Available

Te da la memoria disponible... aunque supongo que habría que sumar el swap disponible (también lo tienes en ese fichero).

Ciertamente es un límite teórico, creo, pero cuando uno se pone a unir ficheros nunca se sabe hasta donde se va a llegar.

Saludos.

No podemos regresar
tincho   09-08-2021, 10:22
#8
(09-08-2021, 10:00)Shordi escribió: Ciertamente es un límite teórico, creo, pero cuando uno se pone a unir ficheros nunca se sabe hasta donde se va a llegar.

Si, correcto no esta determinado de antemano. Prara eludir la carga en memoria de la totalidad del archivo de unión se puede usar el siguiente recurso.
En la terminal, como sabes, se puede crear un archivo con:
echo "una línea de texto" > archivo.txt
Luego para agregar sucesivas lineas a un archivo existente se puede hacer así:
echo "otra línea de texto" >> archivo.txt
Por lo tanto lo único que hay que cargar en la memoria es el archivo de entrada de turno, para leer línea por línea, y pasarlo al archivo de unión, de esta manera por inmenso que sea el archivo final este nunca sera cargado en memoria.
También podría hacerse algo similar para leer linea por linea del archivo de entrada con INPUT o algo de eso.
Saludos.
Saludos.

1 Saludo.
jsbsan   10-08-2021, 08:20
#9
Tincho:
Cita:echo "otra línea de texto" >> archivo.txt
Buen truco ! 

Nota:
Me subido un nuevo  commit al programa. La mejora es que el nombre del fichero resultante "solo" es "unido" más la fecha y hora que lo crea. Antes era la suma de los nombres de los ficheros que unía y se me ha dado el error de nombre de fichero muy largo cuando cogía muchos ficheros para unirlos.
  
Usuarios navegando en este tema: 1 invitado(s)
Powered By MyBB, © 2002-2024 MyBB Group.
Made with by Curves UI.