Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Como leer una linea especifica de un Txt? (https://www.clubdelphi.com/foros/showthread.php?t=11021)

nefy 03-06-2004 18:43:47

Como leer una linea especifica de un Txt?
 
Hola, pues es eso como leer una linea en especial. Ahorita leo la informacion de un Archivo con el clasico Readln sin embargo como son varias lineas debo de ejecutarlo varias veces pues de algunas lineas debo de tomar valores y de otras no. ejemplo:

Ruta de BD
C:\Datos

En esta seccion solo debo de tomar el valor de la segunda linea. Y asi como en este caso existen varios. Asi q mi duda es si existe otra forma q le pueda especificar exactamente q linea leer.

Salu2.

delphi.com.ar 03-06-2004 18:51:49

Si las líneas no tienen ancho fijo o no hay un archivo índice, uses lo que uses necesitará leer todas las líneas para encontrar la buscada.

Saludos!

roman 03-06-2004 18:52:55

¿Por qué no usas un TStringList.LoadFromFile para cargar el archivo y luego simplemente acceder a la línea deseada con TStringList[Indice]?

// Saludos

cloayza 03-06-2004 22:56:32

Otra alternativa
 
Segun lo que pude entender si este archivo contiene informacion de configuracion de tu programa, tal como :

- Ruta de archivos de datos
- directorios de trabajo
- valores por defecto
- Etc...

Puedes utilizar un archivo .INI, delphi tiene muchas formas de acceder este de manera muy facil...

Aqui te coloco un poco de codigo...

Código:

Var
  Vars:TStrings;
  strRutaDataBase, strXlsTemplate, strDBase
Begin
    Try

          Vars:=TStringList.Create;

          With TIniFile.Create( 'Miconfig.Ini' ) Do
          Begin
              ReadSectionValues('BaseDatos',Vars);

              strRutaDatabase:=Vars.Values['RutaDataBase'];
              //C:\Apps\Contabilidad\data
             
              ReadSectionValues('Archivos',Vars);

              strXlsTemplate=Vars.Values['XlsTemplate']; 
              //SAI.XLS']
              strDBFiles=Vars.Values['DBFiles'];
              //PARAMSIM.DBF

              Free;
          End;
    Finally
          Vars.Free;
    End;

Este seria el contenido del archivo Miconfig.Ini

[BaseDatos]
RutaDataBase=C:\Apps\Contabilidad\data

[Archivos]
XlsTemplate=SAI.XLS
DBFiles=PARAMSIM.DBF


Espero te sirva...
Saludos de Christian
Concepcion-Chile

El Domingo 06 jugamos con Brasil...Vamos :D Chileeeeeeeeeeeeeeeeeeee
!!!chi-le, chichichi, lelele, Viva Chileeeeeeeee!!!

cloayza 03-06-2004 22:59:07

Olvido
 
Código:

Var
  Vars:TStrings;
  strRutaDataBase, strXlsTemplate, strDBase:String;

Espero te sirva...
Saludos de Christian
Concepcion-Chile

El Domingo 06 jugamos con Brasil...Vamos Chileeeeeeeeeeeeeeeeeeee
!!!chi-le, chichichi, lelele, Viva Chileeeeeeeee!!!

Amilius 04-06-2004 02:32:46

Cita:

Empezado por nefy
Hola, pues es eso como leer una linea en especial. Ahorita leo la informacion de un Archivo con el clasico Readln sin embargo como son varias lineas debo de ejecutarlo varias veces pues de algunas lineas debo de tomar valores y de otras no. ejemplo:

Ruta de BD
C:\Datos

En esta seccion solo debo de tomar el valor de la segunda linea. Y asi como en este caso existen varios. Asi q mi duda es si existe otra forma q le pueda especificar exactamente q linea leer.

Salu2.

Tal cual lo estás haciendo está bien, son archivos de naturaleza secuencial, sin una estructura que permita usar "seek", es inevitable tener que leer secuencialmente hasta encontrar lo que buscas. El Tstringlist hará lo mismo (incluso leerá todo el archivo y lo colocará en memoria), con la diferencia que será mucho más cómodo programar con su ayuda.

nefy 04-06-2004 17:07:24

Gracias a todos por sus respuestas perdonen la tardanza en contestar pero tuve q irme a casa a dormir. Finalmente decidir tomar el metodo de Roman (Gracias Roman) y su StringList y trabaja mejor q el ReadLn son unas cuantas lineas menos pero asi sientes un mayor control sobre tu aplicacion (al menos yo). Nunca he probado los InI pero espero aprender usarlos en cualquier ratillo. Gracias una vez mas.

Salu2.
Tecoman-Colima-Mexico

delphi.com.ar 04-06-2004 17:13:56

Cita:

Empezado por nefy
...Finalmente decidir tomar el metodo de Roman (Gracias Roman) y su StringList...

Cuidado con este método, solo será útil si el tamaño del archivo es relativamente pequeño.

Saludos!

nefy 04-06-2004 17:18:22

Gracias por tu consejo, sin embargo dudo tenga problemas pues el archivo nunca pasa de 6 lineas y cada lineas con un tamaño no mayor de 30 caracteres.

Oye cambiando un poquitin de tema (a ver si no me regañan). Pero q debe saber un programador para q se considere Senior y no Junior?.
Salu2.

roman 04-06-2004 17:26:57

Cita:

Empezado por delphi.com.ar
Cuidado con este método, solo será útil si el tamaño del archivo es relativamente pequeño.

¿Más o menos como cuánto es pequeño?

Acabo de cargar las 30,000 líneas de Windows.pas en un abrir y cerrar de ojos.

delphi.com.ar 04-06-2004 17:27:54

Aqui llamamos a los programadores Senior a programadores experimentados, y Junior a los que están experimentando :D

delphi.com.ar 04-06-2004 17:32:42

Cita:

Empezado por roman
¿Más o menos como cuánto es pequeño?

Es como que no dije nada.. ¿No? :D
Hay que tener en cuenta que los TStrings cargarán el archivo directamente en memoria, la medida de "pequeño" o "grande" puede ser relativa a los recursos disponibles del sistema.

Saludos!

nefy 04-06-2004 19:38:25

Perdon pero aun no me has respondido
 
Cita:

Empezado por delphi.com.ar
Aqui llamamos a los programadores Senior a programadores experimentados, y Junior a los que están experimentando :D

;) No se si recuerdes pero eso ya me lo habias comunicado en un correo privado; y en mi pregunta especifico q es lo q debe de saber el Senior?.

Ejemplo:
-Dos años trabajado con Interbase o MySQL.
-Experiencia en Bases de Datos de Escritorio(Paradox, DBase, Access, FoxPro).
-Experiencia en conexiones Indy, es decir con Internet.
etc.

Obviamente al ser Delphi un lenguaje de proposito General, siempre existira una(s) rama(s) en la cual se tenga mas experiencia (BaseDatos, Internet, Operaciones Algebraicas, Graficos, etc.)

Espero haberme explicado.

Salu2.

delphi.com.ar 04-06-2004 19:51:27

Cita:

Empezado por nefy
;) No se si recuerdes pero eso ya me lo habias comunicado en un correo privado

¡Y con las mismas palabras! :D

Digamos que es un pre-filtro, cada persona conce sus conocimientos y limitaciones.

Saludos!

nefy 04-06-2004 19:54:23

Pues creo q mas bien comprueban (tu compañia o tu) si llenan sus expectativas el futuro programador "Senior".

Salu2

delphi.com.ar 04-06-2004 19:59:11

Normalmente le hacemos una evaluación, pero por eso lo llamo "pre-filtro", para evitar la perdida innecesaria de tiempo!

nefy 04-06-2004 20:34:05

Me lo imaginaba.

Salu2.


La franja horaria es GMT +2. Ahora son las 13:29:01.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi