Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Separar en campos un archivo de texto (https://www.clubdelphi.com/foros/showthread.php?t=13433)

Walterdf 18-08-2004 19:17:27

Separar en campos un archivo de texto
 
Buenas
Antes que nada pido disculpas si este hilo está mal posteado pero me pareció mas una consulta para la sección Varios que para bases de datos.

Me pasaron un archivo .txt el cual tiene tres campo diferentes pero el problema es que no tiene separación, ni coma, ni pto.y coma, nada. Lo único que se es que los 1ros. tres caracteres corresponden al código, los siguientes 20 al nombre y los restantes 15 al país. Ejemplo de 1 registro:

012Gustavo Daniel LopezArgentina

Lo que quiero hacer es llevar cada registro a una tabla Pradox pero separados en sus repsectivos campos: "012", "Gustavo Daniel Lopez", "Argentina". La tabla sé como armarla, mi mayor duda está en como separo por campos.
Si alguien me puede dar una mano se lo agradeceré.
Aclaro que trabajo con Delphi 4.
Un abrazo.

Walter

roman 18-08-2004 19:28:30

A falta de una solución más inteligente, lo que he hecho en una situación casi igual es leer línea a línea el archivo, con un TStringList, y usar la función Copy en cada línea para extraer los campos:

Código Delphi [-]
Codigo := Copy(Linea, 1, 3);
Nombre := Copy(Linea, 4, 20);
Pais := Copy(Linea, 24, 15);

// Saludos

Luis F. Orjuela 18-08-2004 20:12:39

A continuación te muestro un procedimiento en el cual yo leo secuencialmente un archivo de texto y extraigo la información que necesito a cada una de las variables..:


procedure TForm1.Traer_Morcar_1;
var F1: TextFile;
cadena,nro_oblig,dias_mora,saldo_capi: string;
Pasados, Leidos: integer;
begin
if (Edit4.Text <> '') then
begin
Leidos:=0;
Pasados:=0;
AssignFile(F1, Edit4.text);
Reset(F1);
while not Eof(F1) do
begin
Readln(F1, cadena);
nro_oblig:=copy(cadena,1,12);
dias_mora:=copy(cadena,137,4);
saldo_capi:=copy(cadena,227,14);
if (dias_mora <> ' ') and (strtoInt(dias_mora) <=90 )then
begin
Importa_Obligaciones_1(nro_oblig,dias_mora,saldo_capi);
inc(Pasados);
end;
Leidos:=Leidos+1;
ProgressBar2.Position:=Leidos;
StatusBar1.Panels[4].Text:= InttoStr(Leidos);
Application.ProcessMessages;
end;
CloseFile(F1);
StaticText3.Caption:=InttoStr(Pasados);
end;
end;

Walterdf 18-08-2004 21:39:57

Excelente!!!
Gracias por las respuestas, es lo que necesitaba.
Un abrazo.


La franja horaria es GMT +2. Ahora son las 04:17:53.

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