![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#2
|
||||
|
||||
|
Ok
Para leer de linea a linea utiliza un..
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 |
|
#3
|
|||
|
|||
|
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... |
|
#4
|
|||
|
|||
|
Gracias por responder AGAG4, el codigo me da error como declaro el ExtraeDatoDelimitador??
__________________
____________________________ Un saludo a todos... |
|
#5
|
||||
|
||||
|
ExtraeDatoDelimitador es una función que no esta en Delphi, tu mismo la tienes que programar, es por eso que te di el algoritmo para que lo implementes, pero aqui te doy un ejemplo para 2 campos lo puedes modificar para que sea para cualquier número de campos, para que te guies:
Saludos. |
|
#6
|
||||
|
||||
|
Cita:
Cita:
Cita:
Campos.CommaText := ArchivoCsv[i]; en Campos[0] tienes el código a buscar. Cita:
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 |
|
#7
|
||||
|
||||
|
Puedes Usar esta otra:
Ejemplo de uso: Texto:='aaaaa,bbbbb,ccccccccc,dddddd' For bucle:=0 to SeparaCount(Texto,',') do ShowMessage(Separa(Texto,',',bucle) ); Saludos. |
|
#8
|
|||
|
|||
|
Amigo roman necesito de tu ayuda, estoy utilizando el codigo que me diste lo adapte a mis necesidades pero me da un error que espero tu me puedas ayudar
Code: ______________________________________________________________ procedure TForm1.Button1Click(Sender: TObject); Var ArchivoCsv, Campos: TStringList; I, J: Integer; 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 -1 do begin DataModule2.Table1.Locate('Ficha',Campos[0],[]); DataModule2.Table1.Edit; DataModule2.Table1.Fields[1].Value := Campos[1]; DataModule2.Table1.Fields[2].Value := Campos[2]; DataModule2.Table1.Post; end; end; finally ArchivoCsv.Free; Campos.Free; end; end; _________________________________________________________ cuando corro el procedimiento me da este error "List index of bound (3)" como hago para que no mede este error. Ayuda ![]()
__________________
____________________________ Un saludo a todos... |
|
#9
|
|||
|
|||
|
Buenos dias amigos tengo un pequeño problema estoy utilizando el codigo que me dio el amigo Roman que me a servido de mucha ayuda pero me da un error cuando corro el procedimiento me da este error "List index of bound (0)", que debo hacer para que no me siga dando este error. Agradesco la ayuda amigos.
El codigo que utilizo es el siguente ____________________________________________________________ procedure TForm1.Button1Click(Sender: TObject); Var ArchivoCsv, Campos: TStringList; I, J: Integer; 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 -1 do begin DataModule2.Table1.Locate('Ficha',Campos[0],[]); DataModule2.Table1.Edit; DataModule2.Table1.Fields[1].Value := Campos[1]; DataModule2.Table1.Fields[2].Value := Campos[2]; DataModule2.Table1.Post; end; end; finally ArchivoCsv.Free; Campos.Free; end; end; _______________________________________________________ Que hago para corregirlo.????
__________________
____________________________ Un saludo a todos... |
|
#10
|
||||
|
||||
|
Supongo que el error te lo marca en la línea
DataModule2.Table1.Locate('Ficha',Campos[0],[]); y diera la impresión de que la lista Campos está vacía. Revisa el formato del archivo de texto pues es posible que tenga algunas líneas en blanco. // Saludos |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
|