Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 19-10-2004
danytorres danytorres is offline
Miembro
 
Registrado: may 2003
Ubicación: Venezuela. Edo Carabobo
Posts: 361
Poder: 22
danytorres Va por buen camino
Question Como Leo un TXT y lo guardo en una tabla?

Buenos dias a todos los del foro, Sr. tengo un pequeño problema tengo un TXT de esta forma;

__________________________
005,26.00,0.00,285
006,26.00,0.00,285
007,26.00,0.00,285
008,26.00,0.00,285
__________________________

los datos estan separados por coma el primer dato el numero de empleado que es el me servira de guia para buscar en la tabla para guardar las dema variables, el motor es DBF, como hago para leer cada linea por ejemplo la primera es el empleado 005 tiene 26.00 horas extras y 286 horas acumuladas yo debo buscar su ficha en la tabla y guardar esta data y luego debo pasar a la suiente linea, hasta llegar al final. Como lo hago.
__________________
____________________________
Un saludo a todos...
Responder Con Cita
  #2  
Antiguo 19-10-2004
Avatar de AGAG4
AGAG4 AGAG4 is offline
Miembro
 
Registrado: ago 2004
Ubicación: Los Mochis, Sinaloa, México
Posts: 1.420
Poder: 21
AGAG4 Va por buen camino
Asigna el archivo a una variable tipo TextFile:
Pasos:
1.-Lees Linea
2.-Extraes Datos guiandote con el Separador "coma" (el Signo)
3.-Al separarlos vas a asignando cada dato al campo correspondiente.
4.- Regresar al Paso 1 hasta que No sea Fin de Archivo.

Que tengas buen día.
Responder Con Cita
  #3  
Antiguo 19-10-2004
danytorres danytorres is offline
Miembro
 
Registrado: may 2003
Ubicación: Venezuela. Edo Carabobo
Posts: 361
Poder: 22
danytorres Va por buen camino
Question

Gracias por responder los pasos los conocos el problema es que la sintaxis no la conosco este es el codigo que utilizo para leer el TXT;

code:
_____________________________________________
procedure TConfiguracion.Button1Click(Sender: TObject);
Var
F1: TextFile;
Ch: string;
begin

AssignFile(F1, 'c:\text.txt');

Reset(F1);

Readln(F1, ch);

CloseFile(F1);
end;
_______________________________________________________

lo que se me dificulta es leer linea a linea para guardar en las tablas?? coo es la sintaxis????????
__________________
____________________________
Un saludo a todos...
Responder Con Cita
  #4  
Antiguo 19-10-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Yo creo que la técnica que explico en este hilo puede servirte.

// Saludos
Responder Con Cita
  #5  
Antiguo 19-10-2004
Avatar de AGAG4
AGAG4 AGAG4 is offline
Miembro
 
Registrado: ago 2004
Ubicación: Los Mochis, Sinaloa, México
Posts: 1.420
Poder: 21
AGAG4 Va por buen camino
Ok

Para leer de linea a linea utiliza un..
Código Delphi [-]
//Mientras no sea Fin de Archivo
While EOF(Archi) do begin
Readln(Archi,Linea);//Linea =String
........
{ ExtraeDatoDelimitador(Linea,'1',',');
Primer Parámetro: Linea=Variable String
Segundo Parámetro: '1' que dato va agarrar en este caso el dato de la 1er Coma
Tercero Parámetro: ','=Caracter Separador 
}
Tabla.Insert;
Tabla.Campo1.Value:=ExtraeDatoDelimitador(Linea,'1',',');
Tabla.Campo2.Value:=ExtraeDatoDelimitador(Linea,'2',',');
Tabla.Campo3.Value:=ExtraeDatoDelimitador(Linea,'3',',');
Tabla.Campo4.Value:=ExtraeDatoDelimitador(Linea,'4',',');
Tabla.Post
end;
La opción que dice Roman de usar TStringList es Excelente, pero tengo la duda, como saber cual es el Delimitador para separar los datos????
ó ya esta estandarizado que se tiene que usar entre comillas separado con comas????

Espero te haya ayudado.
Saludos.

Última edición por AGAG4 fecha: 19-10-2004 a las 22:01:35. Razón: Corrección
Responder Con Cita
  #6  
Antiguo 19-10-2004
danytorres danytorres is offline
Miembro
 
Registrado: may 2003
Ubicación: Venezuela. Edo Carabobo
Posts: 361
Poder: 22
danytorres Va por buen camino
Unhappy

Gracias por responder Roman, observe el hilo que me indicaste pero no se adapta a lo que quiero la sintaxi que uso es la siguiente;

Code:
______________________________________________________________
Var
ArchivoCsv, Campos: TStringList;
I, J: Integer;
F1: TextFile;
Ch: string;
begin
ArchivoCsv := TStringList.Create;
Campos := TStringList.Create;

try
ArchivoCsv.LoadFromFile('c:\HV.txt');
for I := 0 to ArchivoCsv.Count - 1 do
begin
Campos.Clear;
Campos.CommaText := ArchivoCsv[i];

for J := 0 to DataModule2.Table1.FieldCount do
begin
DataModule2.Table1.Insert;
DataModule2.Table1.Fields[J].Value := Campos[J];
DataModule2.Table1.Post;
end;
end;
finally
ArchivoCsv.Free;
Campos.Free;
end;
____________________________________________________________

El txt tien esta forma;

005,260.00,0.00,25
006,2.00,0.00,285
007,2600.00,15.00,25
008,55.00,45.00,25

el problema que tengo es que los datos estan separados por coma pero el detalle es que no tienen la misma longitud por ejemplo en la linea uno 005 es el codigo del trabajador que lo uso como referencia para buscar en la tabla, el 260.00 es dato que debo guaradar en la tabla al igual que el 0.00 y el 25, como hago para determinar el tamaño y guardar corectamente el campo sin cortarlo ?????????


Ayuda
__________________
____________________________
Un saludo a todos...
Responder Con Cita
  #7  
Antiguo 19-10-2004
danytorres danytorres is offline
Miembro
 
Registrado: may 2003
Ubicación: Venezuela. Edo Carabobo
Posts: 361
Poder: 22
danytorres Va por buen camino
Unhappy

Gracias por responder AGAG4, el codigo me da error como declaro el ExtraeDatoDelimitador??
__________________
____________________________
Un saludo a todos...
Responder Con Cita
  #8  
Antiguo 19-10-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por danytorres
Gracias por responder Roman, observe el hilo que me indicaste pero no se adapta a lo que quiero
Yo creo que se adapta perfectamente.

Cita:
Empezado por danytorres
el problema que tengo es que los datos estan separados por coma pero el detalle es que no tienen la misma longitud
El ejemplo sirve justamente para cuando los campos no tienen longitud fija sino que están separados por un delimitador (coma en este caso).


Cita:
Empezado por danytorres
por ejemplo en la linea uno 005 es el codigo del trabajador que lo uso como referencia para buscar en la tabla
Luego de la asignación

Campos.CommaText := ArchivoCsv[i];

en Campos[0] tienes el código a buscar.

Cita:
Empezado por danytorres
el 260.00 es dato que debo guaradar en la tabla al igual que el 0.00 y el 25, como hago para determinar el tamaño y guardar corectamente el campo sin cortarlo
¿En qué parte del código piensas que se va a cortar el campo?

Igual que antes, una vez que llenas Campos en cada línea del archivo, Campos[0], Campos[1], Campos[3], etc. tendrán los valores de cada campo y con un Length(Campo[n]) calculas la longitud del valor del campo n-ésimo.

Está claro que la tabla dbase debe tener la estructura adecuada para recibir los valores pero esto ya no es una cuestión del código sino de que el archivo de texto proporcionado con los datos se ajuste al formato de la tabla.

// Saludos
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 02:29:42.


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
Copyright 1996-2007 Club Delphi