Leer una cierta cantidad de caracteres de una archivo.
Hola gente:
por empezar se agradece que estén leyendo este hilo y cualquier repuesta. Supongo que lo que tengo que hacer no es muy dificil pero estoy buscando y realmente no encuentro nada. La cosa es así: necesito leer un archivo pero de a 160 caracteres. Tengo un archivo .dat en el cual cada registro que tengo que leer tiene 160 caracteres y dentro de esos registros cada campo tiene una longitud en particular. Yo lo que necesito saber es como hago para leer los primeros 160 caracteres del archivo (dentro de esto los 2 primeros caracteres, después los 2 siguiente y sucesivamente), después los otros 160 caracteres del archivo, y así sucesivamente hasta el final. Estaría agradecido si alguien me puede brindar alguna función o tipo de código en donde se abra un archivo y se lea de la manera que se necesito. Espero haberme expresado bien. Otra vez gracias. Mariano. |
Código:
public |
Hola...
El archivo está en formato de texto plano? Por que si es así, la solución que te da juanlaplata te puede servir, de otra forma, tendrías que usar otro método... Saludos... |
Solución
Cita:
Código:
function TForm1.insertarRegistrosEnTAP2_CDRs(SRuta: String; id_archivo: integer; OraConn:TADOConnection): integer; |
Insertar campos de longitud variable
Hola a todos, me ha servido mucho este hilo, solo que mis campos no son de longitud fija y estan separados por espacio, en este caso como los puedo ir insertando en la base de datos.
Se me ocurrio ir leyendo por palabra e irlo insertando, puedo hacer un ciclo con el pos hasta que encuentre un espacio?? :) |
claro!
En ocasiones he hecho algo como esto:
Quizás compile y quizás funcione... lo he escrito acá mismo, pues no tengo delphi a mano ahora, pero espero te de una idea. Hasta luego. ;) |
Hola, gracias por responder ya lo probe y me marca un error en la parte de
Campo1 := ExtraeSiguientePalabra(Linea); El error es Too Many actual parameters. Disculpa la ignorancia pero soy novata. :) |
Cita:
|
Si, ese es el error que me marca.
Este es el código tal cual lo puse, aun no he hecho la parte de insertarlo en la bd. unit funcion; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); function ExtraeSiguientePalabra: string; private { Private declarations } public { Public declarations } end; var Form1: TForm1; Lineas: TStringList; Linea, Campo1, Campo2: string; I:integer; implementation {$R *.DFM} function ExtraeSiguientePalabra(var S: string): string; begin if pos(' ', S) <> 0 then begin Result := copy(S, 1, pos(' ', S) -1); Delete(S, 1, length(Result) + 1); //si cabe la posibilidad que haya mas de un espacio separando: S := Trim(S); end else begin Result := S; S := ''; end; end; procedure TForm1.Button1Click(Sender: TObject); begin Lineas := TStringList.Create; try Lineas.LoadFromFile('c:\pruebaleer.txt'); for I:= 0 to Lineas.Count - 1 do begin Linea := Lineas[i]; Campo1 := ExtraeSiguientePalabra(Linea); Campo2 := ExtraeSiguientePalabra(Linea); //HacerAlgoConLosCampos(Campo1, Campo2); end; finally Lineas.Free; end; end; end. Gracias :confused: |
Otra opción :)
Salud OS |
La franja horaria es GMT +2. Ahora son las 15:53:16. |
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