Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 20-10-2004
danytorres danytorres is offline
Miembro
 
Registrado: may 2003
Ubicación: Venezuela. Edo Carabobo
Posts: 361
Poder: 24
danytorres Va por buen camino
Unhappy

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...
Responder Con Cita
  #2  
Antiguo 21-10-2004
danytorres danytorres is offline
Miembro
 
Registrado: may 2003
Ubicación: Venezuela. Edo Carabobo
Posts: 361
Poder: 24
danytorres Va por buen camino
Question

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...
Responder Con Cita
  #3  
Antiguo 21-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
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
Responder Con Cita
  #4  
Antiguo 21-10-2004
danytorres danytorres is offline
Miembro
 
Registrado: may 2003
Ubicación: Venezuela. Edo Carabobo
Posts: 361
Poder: 24
danytorres Va por buen camino
Talking

Gracias Roman por ayudarme tienes razon la ultima fila del TXT estaba en blanco y me daba ese error, este es el codigo que utilizo para realizar una busqueda de un campo que se encuentra en el txt y es buscado en una tabla e insertando los campos separados por coma en la misma tabla;

Code:
_______________________________________________________________
procedure TForm1.BitBtn3Click(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];


If DataModule2.Table1.Locate('Ficha',Campos[0],[locaseinsensitive,lopartialkey])then
begin
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;
_______________________________________________________
Gracia a todos;
__________________
____________________________
Un saludo a todos...
Responder Con Cita
  #5  
Antiguo 27-10-2004
Avatar de JuanBCT
JuanBCT JuanBCT is offline
Miembro
 
Registrado: ago 2004
Ubicación: Campana, Argentina
Posts: 57
Poder: 22
JuanBCT Va por buen camino
Buenos días...... tengo que hacer algo muy parecido a lo de danytorres, por lo que me pareció innecesario comenzar un nuevo hilo.....
También tengo que pasar a una tabla datos de un TXT, y puse en práctica la técnica de separar los campos aquí explicada, pero tengo un problemita...

Supongamos que tengo esta línea:
P304 004/02500002/60/ 00000000364AAAA0000001LOMO ARCHIV. MANT.MIL.
Yo digo que pase campos[3] al campo descripción de mi tabla, y lo pasa bien.

Pero en el caso de esta otra línea...
P304 N/ 017125/3 / 00000000074AAAA0000010FUSIBLE

Como hay espacios en el 2do campo, la descripción ya no es campos[3]; por lo que pasa "/".... lo que sí se es que, con espacio o sin espacio, cada campo está en la misma posición dentro de la línea.

Mi pregunta es: como hago para expresar "de la posición 48 a la 73 es el campo descripción, haya espacios o no"?

Muchas gracias desde ya, espero haberme explicado bien.
Responder Con Cita
  #6  
Antiguo 27-10-2004
Avatar de JuanBCT
JuanBCT JuanBCT is offline
Miembro
 
Registrado: ago 2004
Ubicación: Campana, Argentina
Posts: 57
Poder: 22
JuanBCT Va por buen camino
Perdón, acabo de comprobar algo.... ni siquiera el primero pasa bien, pues sólo pasa la cadena ARCHIV.
Bueno, de todas formas, definiéndolo de la manera que pregunto resolvería la cuestión......
Responder Con Cita
  #7  
Antiguo 27-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 JuanBCT
Mi pregunta es: como hago para expresar "de la posición 48 a la 73 es el campo descripción, haya espacios o no"?
Pero en tu caso no se trata de archivos donde los valores estén separados por un delimitador sino que se trata de campos de ancho fijo. En este caso puedes extraer cada campo con la función Copy.

Código Delphi [-]
var
  Linea: String;
  I: Integer;
 
begin
  for I := 0 to ArchivoCsv.Count - 1 do
  begin
    Linea := ArchivoCsv[i];
    ...
    Campo := Copy(Linea, 48, 73 - 48);
    ...
  end;

Es decir, lo que tú conoces es la posición en que inicia cada campo (offset) y su longitud. Copy(Linea, Offset, Longitud) devuelve la parte de Linea que comienza en el caracter Offset y tiene longitud Longitud.

// Saludos
Responder Con Cita
  #8  
Antiguo 27-10-2004
Avatar de JuanBCT
JuanBCT JuanBCT is offline
Miembro
 
Registrado: ago 2004
Ubicación: Campana, Argentina
Posts: 57
Poder: 22
JuanBCT Va por buen camino
Roman:
Me anduvo de maravilla, muchas gracias por tu ayuda... saludos!
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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 06:03:30.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi