Visual Basic - Agilizar lectura/almacenamiento archivos

Life is soft - evento anual de software empresarial
 
Vista:

Agilizar lectura/almacenamiento archivos

Publicado por Siul (2 intervenciones) el 13/06/2011 23:23:40
Hola,
tengo un problema al leer un archivo de texto muy grande, yo lo leo y almaceno de la siguiente manera:
Open NombreArchivo For Binary As #NumFichero
Variable = Input(FileLen(NombreArchivo), #NumFichero)
Close #NumFichero
El problema es que al ser un txt bastante extenso tarda bastante. Y mi pregunta es, ¿es posible que agilizar esto para que tarde menos? o quizá ¿Sería posible pasar este txt a otro formato que se lea más rápido?
Muchas gracias por su tiempo. Un saludo ;)
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
Imágen de perfil de Antoni Masana
Val: 1.259
Plata
Ha mantenido su posición en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Agilizar lectura/almacenamiento archivos

Publicado por Antoni Masana (557 intervenciones) el 14/06/2011 09:10:01
¿Exactamente que pretendes hacer?

He realizado una prueba con las instrucciones que has puesto y tarda 5 segundos en leer un fichero de este tamaño: 1.851.176

He utilizado este fichero por que es el que gestiona una serie de programas que he ralizado.

Es un fichero de texto de longitud variable, hay un programa que añade registros y otro que cada cierto tiempo verifica si hay registros nuevos, los lee y los procesa.

Al iniciar el programa tarda un poco por que debe leer y procesar todo el fichero pero una vez inicializado la cosa va muy rapida, la verificación es cada segundo.

En la primera lectura abro el fichero como secuencial por que es más rapido:

Open Fich_LOG For Input As #c_Inp

y en las siguientes como binario y se posiciona al final del archivo

Open Fich_LOG For Binary As #c_Inp ' Lee los nuevos registros
If LOF(c_Inp) >= n_Posicion And n_Posicion > 0 Then
Seek #c_Inp, n_Posicion ' Se posiciona al final de la ultima
end if

La lectura es la misma para los dos casos

Line Input #c_Inp, c_Registro

Si cargas un fichero grande o muy grande en una variable te estas comiendo recursos del sistema y se volvera lento e inestable.
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

Agilizar lectura/almacenamiento archivos

Publicado por Siul (2 intervenciones) el 14/06/2011 16:48:22
Gracias por responder, el problema es que mi archivo pesa 3,9 MB. Y lo cargo para luego hacer unas consultas en él. Supongo que será mejor meterlo en una base de datos y hacer directamente las consultas a la base de datos sin cargaar todo el fichero.
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

Agilizar lectura/almacenamiento archivos

Publicado por alfonso (67 intervenciones) el 24/06/2011 09:41:39
una pregunta estas utilizando un txt como almacen de datos y luegos estas recuperando registros de este

si es asi lo que debes hacer es estructurarte un form que te separe los registros que consultas para que cuando los guardes los puedas tener en una base de datos, puedes usar el componente richtexbox y los campos de la db deben estar en memo asi sosportar mas de 255 caracteres

si no es asi y solo estas leyendo un documento cual es la idea de verlo en un form

saludos
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