Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Extraer datos de un archivo plano. (https://www.clubdelphi.com/foros/showthread.php?t=69558)

ingabraham 25-08-2010 17:03:27

Extraer datos de un archivo plano.
 
1 Archivos Adjunto(s)
Hola necesito ir, extayendo de cada registro para verificar si la deuda total de cada registro es correcta, esto lo hago con ciertas operaciones , pero para ello necesito ir estrayendo las siguientes información:


CORTE INTERES:
TASA INTERES:

FECHA QUE DEBIO PAGAR:
FEC.PAGO/FEC.GEN:

CEDULA
DEUDA INTERESES
DEUDA TOTAL

alguien me puede decir como puedo ir extrayendo estos datos.

AzidRain 25-08-2010 22:31:30

Plantea un algoritmo de como lo harías tú...y de ahí partimos.

luisdevis 25-08-2010 22:44:07

Ingabraham, lee cada línea y métela en una variable tipo string,luego usa la función pos() para detectar el texto que deseas,

p.ej.
Linea := readln(f,t);
P := pos('CORTE INTERES :',Linea);
if P > 0 then vCorte := copy(Linea,p+15,10)

y así sucesivamente...


Seguro que te servirá, pero no esperes que te pongamos todo el código de la rutina que necesitas. :cool:

ingabraham 25-08-2010 23:01:16

si no he puesto codigo, es por que no se por donde empezar
y no se como validar cual linea es la correcta para tomarla.
agradezco mucho sus aportes.

rrf 26-08-2010 00:47:49

Hola.

He mirado el archivo de ejemplo que adjuntas.

Me parece que es fácil leer los datos de ese archivo; aunque te llevará un tiempito hacer que todo salga bien.

No tengo ni idea de tus conocimientos, ni de la versión de Delphi que usas. Así que te comentaré lo que creo más importante.

Para leer el archivo puedes usar un ListBox, un Memo o un TStringList. Con LoadFromFile ('NombreArchivo.txt').

Luego utilizas Items (Lines si usas un Memo). Por ej. memo1.Lines [3]. Todo ello, sabiendo que se parte de el item nº 0, no del nº 1.

Por ej.: memo1.Lines.Count -1 te da el número de índice de la última línea del Memo.

Para recorrer todas las líneas del Memo, puedes usar:

Código Delphi [-]
For cc := 0 to memo1.Lines.Count -1 do
begin

  // Tu código

end ;

También podrías usar un While...do...
Código Delphi [-]
  cc := 0 ;
  while cc <= memo1.Lines.Count -1 do
  begin
    // Tu código
   
    cc := cc + 1 ; // ó 2 ó el valor que necesites.
  end;

cc es una variable integer.

Para localizar un tipo determinado de texto en una línea, usa la función Pos. Con ella podrás saber si existe un texto determinado dentro de una línea, y devuelve la posición en la que se encuetra ese texto.

Por ej., en el bucle for anterior, podrías ver si aparece el texto "VENTAS:" en la línea que está leyendo. Si aparece, devolverá un valor superior a 0:

Código Delphi [-]
  if pos ( 'VENTAS', Memo1.Lines [ cc ] ) > 0
    then ...

Para sacar partes del texto de una línea, usa la función COPY, que devuelve una parte del texto que comienza en una posición xx y que contiene yy caracteres. Ej:

Copy ( Memo1.Lines [ cc ], xx, yy ) ;

Combinando todo esto, seguro que puedes hacer muchas cosas.

Saludos.


La franja horaria es GMT +2. Ahora son las 02:01:31.

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