Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 3
Ir a la página 1, 2, 3  Siguiente
 
Se Puede Leer Una Linea Especifica De Un Archivo Sin Recorrer Todo El Archivo?
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Se Puede Leer Una Linea Especifica De Un Archivo Sin Recorrer Todo El Archivo? 
 
se puede leer una linea especifica de un archivo sin recorrer todo el archivo?

supongamos que tenemos un archivo txt con datos algo así

1=nombre
2=apellido
3=edad
4=dirección

quisiera saber si con el código

 While Not Eof(archivo)
    Line Input #archivo, linea
    Print linea
  Wend


ese código lee linea por linea empezando de la  primera linea hasta la ultima,y para leer la edad por ejemplo tendría que poner un continúe si el primer carácter no es 3 ,
si es 3 leo la información de la linea.

mi pregunta es, se puede leer la linea 3 directamente sin leer las lineas anteriores?  con el código mostrado modificado o de otra forma?
 




===================
Software libre, programación libre, vida libre es la Public function Libertad()as Invendible
Proyectos: VisorRV1960,Taller2015,Tanteador
https://sourceforge.net/u/v3ctor-full/profile/
Blog: http://novatocodegambas.blogspot.com.uy/
 
v3ctor - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Se Puede Leer Una Linea Especifica De Un Archivo Sin Recorrer Todo El Archivo? 
 
V3ctor:

Citar:
se puede leer la linea 3 directamente sin leer las lineas anteriores?

Con archivos de texto, los tienes que leer de dos formas:
- linea a linea (como has hecho con el bucle Ẃhile),
- leerlo completo con file.open()

Si lees el contenido completo del archivo, y lo conviertes en un array de cadenas, ya puedes acceder, por el valor del indice del array:
dim contenido as string
dim ArrayCadenas as string[]

contenido=file.open("nombrearchivo.txt")
ArrayCadenas=split(contenido,"/n")

print "3 linea valor es=";ArrayCadenas[2] 'nota: los arrays siempre empiezan por el indice 0, por eso el 3º elemento , es el indice 2.
 

No se lo que estas haciendo, pero a lo mejor, ya te merece la pena usar bases de datos, (sqlite3, por ejemplo), si vas a tener muchos datos
 




===================
Blog personal
Web: SoloGambas seleccion de articulos dedicados a Gambas
Visita el Curso de Gambas3 ¡¡¡Gratuito!!!
 
jsbsan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Se Puede Leer Una Linea Especifica De Un Archivo Sin Recorrer Todo El Archivo? 
 
Hola v3ctor.

Los archivos de texto plano se leen siempre de principio a fin. Solo que seleccionas la información que te interesa.
En tu caso es la linea que comienza por 3 para mostrarla.

Con los archivos de texto podemos acceder a ellos usando el modo secuencial y el modo directo

La utilización de un método de acceso u otro, depende de como se ha organizado el fichero al crearlo y del soporte donde se ha creado.
No es lo mismo un archivo que sea como un libro, un documento, a un archivo que tiene una estructura de registros con sus campos.

Un archivo puede ser organizado de tres maneras:
- Secuencial
- Secuencial indexada
- Directa o relativa

Te adjunto un vídeo aunque es para el lenguaje C, hay conceptos generales que podemos entender para gambas, o en general.
No hay necesidad de entender la estructura de como se crea en C.


Link


Hay libros y libros sobre este tema. Los programadores con mas años de experiencia estarán muy acostumbrado a trabajar con los
archivo de texto de distintas formas.

Seguro que esta info nos interesa:

Archivos

Espero haberte ayudado un poco. Como comprenderás con el tiempo y el uso de las bases de datos, han quedado un poco desplazados.
Los archivos de texto siempre serán mas simples a la hora de trabajar con ellos.

Saludos
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Se Puede Leer Una Linea Especifica De Un Archivo Sin Recorrer Todo El Archivo? 
 
julio estaría  interesante saber cual de los dos métodos es mas rápido en micro segundos, si lo mejor es la sqlite3 pero dado mis intentos fallidos jaja le saco el cuerpo, es algo pendiente que tengo.

shell, muy buena tu info la estoy leyendo.


hay algo que no entiendo supongamos que el archivo tiene cuatro lineas no entiendo que no haya un método para acceder solo a la linea tres. eso deberia existir pues se ahorra tiempo para mostrar  los resultados finales y se ahorra recursos de procesamiento.  

algo asi:

linea= file.open.line(RutaArchivo, 40)
print linea
 




===================
Software libre, programación libre, vida libre es la Public function Libertad()as Invendible
Proyectos: VisorRV1960,Taller2015,Tanteador
https://sourceforge.net/u/v3ctor-full/profile/
Blog: http://novatocodegambas.blogspot.com.uy/
 
última edición por v3ctor el Domingo, 30 Noviembre 2014, 14:53; editado 2 veces 
v3ctor - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Se Puede Leer Una Linea Especifica De Un Archivo Sin Recorrer Todo El Archivo? 
 
...sostengo los pasos de jsbsan:
 
Print Split(File.Load("/ruta/del/file/de/texto"), "\n")[2]
    
 



 
última edición por vuott el Domingo, 30 Noviembre 2014, 17:43; editado 3 veces 
vuott - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Se Puede Leer Una Linea Especifica De Un Archivo Sin Recorrer Todo El Archivo? 
 
V3ctor:

Citar:
julio estaría  interesante saber cual de los dos métodos es mas rápido en micro segundos,

En principio, es debería de ser más rápido el método del array de cadenas, ya que el interprete trabaja menos y por lo tanto, hay menos ordenes que se tienen que traducir de gambas al lenguaje máquina  mientras se ejecuta la aplicación.

Tambien depende  del  tamaño del archivo de texto, no es lo mismo 10 lineas que 10.000 lineas....

De todos modos, si tienes muchos datos, y quieres "rendimiento",  lo mejor es usar un motor de base de datos (mysql, sqlite3, etc.).

Citar:
no entiendo que no haya un método para acceder solo a la linea tres. eso deberia existir pues se ahorra tiempo para mostrar los resultados finales y se ahorra recursos de procesamiento.

Busca información en la web de como se almacenan los archivos y su contenido en el ordenador.
Busca que son archivos secuenciales y de acceso aleatorio.
Los archivos del tipo aleatorio, pueden acceder a una determinada zona del archivo y extraer un registro. (son usados en C, pero la información se guarda como registros de un ancho fijo)

Leete estos hilos:
http://foro.gambas-es.org/viewtopic.php?f=1&t=1084&start=0
http://foro.gambas-es.org/kb.php?mode=article&k=12

De todos modos, lo mejor es usar bases de datos, y te quita de muchos problemas...
 




===================
Blog personal
Web: SoloGambas seleccion de articulos dedicados a Gambas
Visita el Curso de Gambas3 ¡¡¡Gratuito!!!
 
última edición por jsbsan el Domingo, 30 Noviembre 2014, 20:20; editado 1 vez 
jsbsan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Se Puede Leer Una Linea Especifica De Un Archivo Sin Recorrer Todo El Archivo? 
 
Citar:
estaría  interesante saber cual de los dos métodos es mas rápido en micro segundos,


Eso es fácil. Implementa ambos métodos en dos funciones diferentes y activa el perfilado [0] en el IDE para conocer los tiempos de ejecución de cada función.

[0] Para activar el perfilado, menú Depuración->Activar perfilado

Saludos
 




===================
Jesús Guardón

Por favor, usemos el corrector ortográfico antes de pulsar el botón "Enviar".

"uo ǝs ʇɐu pıɟıɔıן ɐdɹǝupǝɹ ɐ dɹoƃɹɐɯɐɹ, soןo ɥɐʎ bnǝ dɹodouǝɹsǝןo"
 
jguardon - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Se Puede Leer Una Linea Especifica De Un Archivo Sin Recorrer Todo El Archivo? 
 
Hola.

Una cuestión importante, ¿ Tenemos algún limite a la hora de trabajar con los archivos de texto en gambas ?.
Quiero decir, ¿ podemos usar todos los métodos de acceso y lo que los programadores de antes han podido hacer a la hora de trabajar con ellos ?.

El manual que tengo aquí es del año 1994. Y es un tocho de 400 paginas. En una librería de segunda mano lo compré por 4€!.
Tiene ejercicios con algoritmos sobre ficheros , tablas y tablas de decisión (    ). Para hartarse..lastima no tener tiempo suficiente.

Le hago una foto y os lo muestro aquí. No he sabido reducir mucho más el peso del archivo.

portada  
descripcion

A veces voy a las librerías de segunda mano, pero no es fácil encontrar material de ordenadores.

Hay libros bastante baratos de metodología de programación en cambio este lo he encontrado por cerca de 25€ en iberlibro, sera el estado.
Este está bien, esta plastificado. No olvidéis echar un ojo a:

Iberlibro

Saludos
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Se Puede Leer Una Linea Especifica De Un Archivo Sin Recorrer Todo El Archivo? 
 
v3ctor escribió: [Ver mensaje]
supongamos que tenemos un archivo txt con datos algo así

1=nombre
2=apellido
3=edad
4=dirección


Uhmmmm... es posible utilizar tambien la función Scan():
   Print Scan(File.Load("/ruta/del/file/de/texto"), "*\n*\n*\n*")[2]

 



 
vuott - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Se Puede Leer Una Linea Especifica De Un Archivo Sin Recorrer Todo El Archivo? 
 
Hola Vuott.

En este caso es un ejemplo pequeño, pero imagina que quieres ir a una parte concreta de un archivo de texto mucho más grande sin tener que leer el contenido anterior.
Ese es el problema. Que a lo mejor no es tanto problema.

Saludos
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Selecionar Que Linea Leer De Un Archivo De... vikobak General 9 Viernes, 18 Junio 2010, 01:43 Ver último mensaje
AnSnarkista
No hay nuevos mensajes Recorrer O Contar En Archivo De Configuracion tomas General 4 Jueves, 04 Noviembre 2010, 12:11 Ver último mensaje
tomas
No hay nuevos mensajes Leer Un Archivo Wav, Guardar Sólo Los Dat... vuott Aplicaciones/Fragmentos de Código 6 Viernes, 16 Agosto 2019, 15:59 Ver último mensaje
gambafeliz
No hay nuevos mensajes Todo En Un Archivo Imagen Shell Mundo Linux 4 Miercoles, 01 Julio 2020, 21:28 Ver último mensaje
tercoIDE
 

Publicar nuevo tema  Responder al tema  Página 1 de 3
Ir a la página 1, 2, 3  Siguiente

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 
Lista de permisos
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario



  

 

cron