Mensajes: 128
Temas: 22
Gracias Recibidas: 59 en 34 posts
Gracias Dadas: 28
Registro en: Jul 2020
Os dejo una pequeña herramienta que he hecho para unir ficheros de texto plano.
Código fuente:
https://github.com/jsbsan/unirficherostexto
Los siguientes 2 usuarios dicen gracias a jsbsan por este post:2 usuarios dicen Gracias! a jsbsan por este post
• Shordi, tincho
Mensajes: 1,268
Temas: 186
Gracias Recibidas: 278 en 212 posts
Gracias Dadas: 201
Registro en: Jul 2020
Hola Julio, vi el video y esta bien explicado.
Gracias por compartir.
Saludos.
1 Saludo.
Mensajes: 1,016
Temas: 107
Gracias Recibidas: 360 en 245 posts
Gracias Dadas: 406
Registro en: Jul 2020
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
Mensajes: 69
Temas: 8
Gracias Recibidas: 10 en 9 posts
Gracias Dadas: 96
Registro en: Aug 2020

Gracias por compartir.
Mensajes: 128
Temas: 22
Gracias Recibidas: 59 en 34 posts
Gracias Dadas: 28
Registro en: Jul 2020
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
Mensajes: 1,268
Temas: 186
Gracias Recibidas: 278 en 212 posts
Gracias Dadas: 201
Registro en: Jul 2020
(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.
Mensajes: 1,016
Temas: 107
Gracias Recibidas: 360 en 245 posts
Gracias Dadas: 406
Registro en: Jul 2020
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
Mensajes: 1,268
Temas: 186
Gracias Recibidas: 278 en 212 posts
Gracias Dadas: 201
Registro en: Jul 2020
(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.
Mensajes: 128
Temas: 22
Gracias Recibidas: 59 en 34 posts
Gracias Dadas: 28
Registro en: Jul 2020
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.