Principales respuestas
Dividir Un Archivo TXT en Varios archivos con VB6.0

Pregunta
-
Hola amigos, veran.. tengo un problemilla.. tengo un archivo txt que pesa 16,000 KB
y lo que deseo saber como puedo dividir este archivo en archivos maximos de 3000 KB,
sin peder los datos ahi almacenados
o en todo caso como saber cuantas lineas ingresas en el txt para que no supere los 3000 bk de tamaño
gracias de antemano
Respuestas
-
Hola:
Si las líneas son de ancho fijo, puedes calcular cuantas líneas 'caben' en 3000kb:
Dim cLineaDeAnchoFijo As string cLineaDeAnchoFijo = ' Lees la primera línea del fichero de texto. nLineas = INT((3 * 1024 * 1024) / (Len(cLineaDeAnchoFijo) + 2)) ' Nota: El +2 es para contar los caracteres de retorno de fila y de carro. 'Y ahora lees cada nLineas y las vas guardando en ficheros.
Sino, tendrás que ir procesando línea a línea, en pseudocódigo:
Dim cLinea As String, cFichero3000 As String Do While NOT EOF cLinea = 'Leer Línea Del Fichero If Len(cFichero3000) + Len(cLinea) > 3*1024*1024 Then ' Escribir en un fichero el texto de cFichero3000 cFichero3000 = cLinea ' Empezamos un nuevo fichero Else cFichero3000 = cFichero3000 & vbcrlf & cLinea End If Loop ' Todo esto en un bucle leyendo líneas del fichero principal
Espero que te sirva
Saludos
- Marcado como respuesta arucoba viernes, 14 de marzo de 2014 21:50
Todas las respuestas
-
Tendrás que controlar el nº de caracteres que incluyes en el archivo. Cada carácter ocupa 1 Byte, por lo que podrás incluir unos 16.000.000 caracteres. Ten en cuenta los caracteres de fin de linea.
También podrías ir comprobando el tamaño del archivo con GetFileInfo.
Saludos, Javier J
-
Hola:
Si las líneas son de ancho fijo, puedes calcular cuantas líneas 'caben' en 3000kb:
Dim cLineaDeAnchoFijo As string cLineaDeAnchoFijo = ' Lees la primera línea del fichero de texto. nLineas = INT((3 * 1024 * 1024) / (Len(cLineaDeAnchoFijo) + 2)) ' Nota: El +2 es para contar los caracteres de retorno de fila y de carro. 'Y ahora lees cada nLineas y las vas guardando en ficheros.
Sino, tendrás que ir procesando línea a línea, en pseudocódigo:
Dim cLinea As String, cFichero3000 As String Do While NOT EOF cLinea = 'Leer Línea Del Fichero If Len(cFichero3000) + Len(cLinea) > 3*1024*1024 Then ' Escribir en un fichero el texto de cFichero3000 cFichero3000 = cLinea ' Empezamos un nuevo fichero Else cFichero3000 = cFichero3000 & vbcrlf & cLinea End If Loop ' Todo esto en un bucle leyendo líneas del fichero principal
Espero que te sirva
Saludos
- Marcado como respuesta arucoba viernes, 14 de marzo de 2014 21:50
-
excelente la idea amigo LG DES, me da una idea como poder solucionarlo
claro que el problema ahora seria que como no todas las lineas de texto son del mismo
tamaño, pero por lo menos podria sacar algún promedio y saber cuantas lineas
alcanzaran para no pasarme de los 3000kb