Visual Basic - como Abrir un fichero.txt enorme...

Life is soft - evento anual de software empresarial
 
Vista:

como Abrir un fichero.txt enorme...

Publicado por Manuel (33 intervenciones) el 04/05/2003 16:41:19
Hola, el problema es el siguiente:

Necesito abrir un fichero .txt en un listbox (eso no plantea dificultad alguna), el problema viene cuando el fichero tiene ¡¡¡ 100 megas !!! siempre se me queda pillado.

¿Alguna solución? Ya sé que es muy difícil... pero por si alguien sabe como abrirlo de una forma mas rápida, o vaciando búfer... no se... de alguna manera que el ordenador no se quede colgado.

Pongo un ejemplo: Cuando quiero abrir ese fichero con el block de notas, se queda también pillado, pero sin embargo con el Word Pad si lo abre (casi siempre) y el Word (siempre).

Desde ya, muchísimas gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:como Abrir un fichero.txt enorme...

Publicado por Esteban (1144 intervenciones) el 04/05/2003 21:42:40
Si usas el comando Open, te cuento que es algo anticuado, lo peor de todo es que no indicas eso.

Por lo tanto tampoco sé si estarás utilizando el objeto FileSystemObject
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:como Abrir un fichero.txt enorme...

Publicado por Manuel (33 intervenciones) el 05/05/2003 00:22:12
Uso OPEN, por eso quería saber que era lo mas aconsejable.

Un saludo y gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

El truco es...

Publicado por Esteban (1144 intervenciones) el 05/05/2003 02:08:15
Perfecto, eso era justo lo que necesitaba saber...

El FileSystemObject es un objeto que debes agregar en una referencia de proyecto, esta referencia es al Microsoft Scripting Runtime, para utilizar esto debes tomar en cuenta esto:

FileSystemObject es un intermediario para abrir el archivo al cual debes asignarlo a una variable de objeto del tipo TextStream. Creo que solo con eso puedes experimentar bastante.

Suerte...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Gracias pero...

Publicado por Manuel (33 intervenciones) el 05/05/2003 02:59:07
Voy a mirar en el MSDN... a ver si encuentro algo para empezar... ¿Algún ejemplo que tengas? o algo donde pueda mirar para estudiar o ver algún código????

Gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:El truco es...

Publicado por Manuel (33 intervenciones) el 05/05/2003 03:09:14
La pregunta es:

Como abrir un archivo de texto con esta propiedad, pero línea a línea para poder filtrarlas...

Gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Lo he conseguido pero...

Publicado por Manuel (33 intervenciones) el 05/05/2003 04:59:54
Gracias, ahora se una nueva forma de cargar archivos de texto rápidamente aunque sean largos... la verdad es que los carga rapidísimo... pero mi gozo en un pozo por dos razones:

Necesito abrirlo en un listbox y para ello tengo que abrirlo línea a línea (y ya ralentiza el tema una barbaridad).

He probado también a abrirlo en un RichTexBox y lo abre a una velociada de vértigo, pero ya no se si puedo despues manipular las líneas como yo quiero.

Una vez abierto en un RTB, necesitaría filtrar las líneas que me conviniesen y mostrarlas en un listbox, (mediante una búsqueda) por ejemplo... las líneas que comiencen por HOLA pasarlas a un listbox... (siempre serían líneas completas hasta el retorno de línea) aunque ocupen varías (perdón por la repetición) líneas dentro del RTB.

Lo he abierto de la siguiente forma:

(A base de Msdn y mirar por ahí)...

Dim fso, ts, s
Const ForReading = 1

Set fso = CreateObject("Scripting.FileSystemObject")
Text1.Text = CommonDialog1.FileName

Set ts = fso.OpenTextFile(Text1.Text)
s = ts.ReadAll
RichTextBox1 = s

ts.Close

También lo he abierto línea a línea pero se ralentiza. (ReadLine)

¿alguna idea?

Gracias por todo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Lo he conseguido pero...

Publicado por maCo (322 intervenciones) el 06/05/2003 02:23:04
un texto de 100 MB ? creo que exageras jeje
bueno si se lee el archivo de 100 MB, obviamente demorara si lo quieres hacer linea por linea, y la velocidad de vb no ayuda.
de todas formas

abre el archivo creas un buffer y vas metiendo los datos al buffer, mientras mas grande sea el buffer mejor.
ahora linea por linea.
termina supongo la linea en vbCrLf
haces un loop (bucle)
for each line in split(buffer, vbCrLf)
'codigo
next line

line es una variable de tipo variant
quizas eso te sirva
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ufffffffffff... palabras mayores

Publicado por Manuel (33 intervenciones) el 06/05/2003 02:48:00
Gracias amigo, pero no sabría hacerlo, he mirado algo en cuanto a bufer... pero todavía no llego a ese nivel... el código es muy cortito pero no se hacerlo, quizá me podrías echar una mano... de todos modos miraré en el msdn... pero no sé, ya bastante me costó hacer lo que hice... je,je,je...

Gracias de todos modos.

Un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Por cierto, no exagero, je,je,...

Publicado por Manuel (33 intervenciones) el 06/05/2003 03:15:54
No, amigo, no exagero, se que puede sonar muy fuerte pero de mis estudios generos logs que sobrepasan muy facilmente los 50-80 megas... tranquilamente.

la media es de 60 megas.

Gracias y espero que puedas ayudarme, yo por mi parte estoy haciendo lo que puedo.

Un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Perdón por la demora

Publicado por Esteban (1144 intervenciones) el 06/05/2003 08:04:39
Mira, tengo un problema, no puedo responder inmediatamente ya que estoy trabajando en un lugar que no me tienen internet habilitado, pero bueno, maCo tiene razón, por más que lo coloquen hasta en un contenedor o collection será muy lento, pero un ejemplo puede ser que uses el objeto Collection o de la misma DLL que contiene al FileSystemObject, puedes utilizar el Dictionary, tiene metodos de Add y Remove, es muy cómodo pues puedes hacer ciertas consultas sobre el mismo objeto, otra es que lo cargues en una matriz, una línea por cada nodo de la matriz.

No sé, son ideas nada más.

Espero te sirvan.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar