Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

¿Como leer ficheros de forma mas rápida?

Estas en el tema de ¿Como leer ficheros de forma mas rápida? en el foro de Visual Basic clásico en Foros del Web. Que onda comañeros del foro, la cuestión es que ya cree 2 funciones para leer y escribir datos en un archivo, pero la lata es ...
  #1 (permalink)  
Antiguo 26/08/2005, 19:34
Avatar de Jad-Neo  
Fecha de Ingreso: octubre-2004
Mensajes: 344
Antigüedad: 19 años, 6 meses
Puntos: 0
¿Como leer ficheros de forma mas rápida?

Que onda comañeros del foro, la cuestión es que ya cree 2 funciones para leer y escribir datos en un archivo, pero la lata es que es byte a byte y se tarda un buen, ¿hay alguna forma de hacerlo más rápido?. Hay les dejo el código de una para que vean:
Código:
Function LoadFile(FName As String, Method As Integer) As String
'En Method 0 es para binario y 1 para textual
Dim Cont&, FLen&, tmpStr$, Num%, opByte As Byte
FLen=FileLen(FName)
Num = FreeFile()
Open FName For Binary Access Read As #Num
For Cont = 1 To FLen
     Get #Num, Cont, opByte
     If (Method = 0) Then
         tmpStr = tmpStr & ChrB$(opByte)
     Else
         tmpStr = tmpStr & Chr$(opByte)
     End If
     DoEvents
Next Cont
LoadFile = tmpStr
Close #Num
End Function
Con esta cargas un archivo y obtienes la matriz de bytes. Espero puedan ayudarme a reducir el tiempo de carga. Gracias

NOTA: He oido por ahí que si uso variables de 4 bytes puede ser que funciones pero no se como.

Última edición por Jad-Neo; 26/08/2005 a las 20:00 Razón: Correciones
  #2 (permalink)  
Antiguo 27/08/2005, 05:28
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Antigüedad: 19 años
Puntos: 17
SIEMPRE se tienen que cargar los archivos byte a byte, lo hagas con funciones que recojan una linea, o que recogan variables más "grandes", al final vas a recoger todos los bytes... ¿Por qué dices que es lento? Por cierto, eso es "copiar" el archivo, no "abrirle". Puedes operar en el archivo sin copiarle entero, o al menos por partes y será más eficiente si es que te urge tanto la velocidad.
  #3 (permalink)  
Antiguo 29/08/2005, 17:48
Avatar de Jad-Neo  
Fecha de Ingreso: octubre-2004
Mensajes: 344
Antigüedad: 19 años, 6 meses
Puntos: 0
No, lo que pasa es que quiero cargar el archivo en memoria directamente para no tener que estar accesando al disco a cada rato, ya lo he probado y es mucho mejor tener el archivo cargado en memoria a tener que estar accesandolo a todo momento. ACLARACION, esto es para archivos de hasta 1 mb, porque si cargo archivos de... que estoy diciendo; hasta de 100 kb se nota el tremendo retardo. Lo que quiero hacer es lo mismo que el bloq de notas al cargar un archivo de texto, no se tarda tando, aunque sea uno de 1 mb.
__________________
Nunca seas sabio en tu propia opinión.
  #4 (permalink)  
Antiguo 30/08/2005, 08:38
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Antigüedad: 19 años
Puntos: 17
¿VB se ralentiza al pedir/usar más de 1 Mb de memoria RAM o al cargar un archivo de ese tamaño? ¿De 100 Kb también?

Jurjur... Nunca me reí tanto... O VB es muy malo, o estás cargándolo mal. Lo estás haciendo en un array dinámico, ¿no? Pues entonces está asegurado: lentitud total.

Es que el Bloc de Notas está en C/C++ y estos lenguajes no se retardan al usar o pedir memoria, la velocidad será la misma (o casi), sea 1 Mb o sea 1 Gb entero...
  #5 (permalink)  
Antiguo 02/09/2005, 18:19
Avatar de Jad-Neo  
Fecha de Ingreso: octubre-2004
Mensajes: 344
Antigüedad: 19 años, 6 meses
Puntos: 0
Gracias por los comentarios pero ya lo corregí para que utilice variables de 32 bits y se disminuyó el tiempo de carga y escritura bastante. Es más si quieren les paso una DLL ActiveX que creé yo en colaboración con uds. (por supuesto, gracias a sus ayudas) donde tengo un buen de funciones y procedimientos interesantes. Si la quieren hay me dicen. Bye y gracias.
__________________
Nunca seas sabio en tu propia opinión.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:05.