Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 28-01-2008
Walterdf Walterdf is offline
Miembro
 
Registrado: may 2003
Ubicación: Buenos Aires
Posts: 152
Poder: 21
Walterdf Va por buen camino
Wink Uso del TStringList.Delimiter/DelimitedText

Buenas a todos!

Estoy intentando leer un txt para pasarlo a db. Utilizo TStringlist para cargar el archivo que está delimitado por punto y coma. Especifico el Delimiter como ';' pero no me está trayendo la información de manera correcta. Cuando encuentra un espacio tambien lo toma como separador. Probé cambiar el formato del txt estableciendo el delimitador como tabulación y sucede lo mismo.
Doy un ejemplo de 1 línea del archivo txt:

TRANSMISION - DIRECCION - CAJA;ANILLOS DE SINCRONIZADO;ROT;030001;CHEVROLET;CAJA FAE 1RA.;8,92;5.752.540;;;;;;;;;;;;;;;;30001,00

y lo leo en un procedimiento de esta manera:
Código:
var
  TXTFile, fields: TStringList;
  i: Integer;
begin
  TXTFile := TStringList.Create;
  fields := TStringList.Create;
  try
    TXTFile.LoadFromFile('autoparts.txt');
    for i := 0 to TXTFile.Count - 1 do
    begin
      fields.Clear;
      fields.Delimiter := ';';
      fields.QuoteChar := '';
      fields.DelimitedText := CSVFile[i];

   //...demás código para realizar la inserción
Hasta aquí si veo el contenido de fields, sería:
fields[0] : TRANSMISION
fields[1] : -
fields[2] : DIRECCION
fields[3] : -
fields[4] : CAJA
...
y debería ser:
fields[0] : TRANSMISION - DIRECCION - CAJA
fields[1] : ANILLOS DE SINCRONIZADO
fields[2] : ROT
fields[3] : 030001
fields[4] : CHEVROLET
...

Qué estoy haciendo mal?

Desde ya agradezco a quien pueda darme una mano.
Saludos!!
Responder Con Cita
  #2  
Antiguo 28-01-2008
Mick Mick is offline
Miembro
 
Registrado: may 2003
Posts: 405
Poder: 21
Mick Va por buen camino
No se si ha sido un fallo de transcripcion o realmente en el codigo fuente original esta asi pero esta linea:

fields.DelimitedText := CSVFile[i];

deberia ser

fields.DelimitedText := TXTFile[i];


CSVFile es una variable que no aparece por ningun lado en tu ejemplo salvo ahi !!!!.


Saludos
Responder Con Cita
  #3  
Antiguo 28-01-2008
Walterdf Walterdf is offline
Miembro
 
Registrado: may 2003
Ubicación: Buenos Aires
Posts: 152
Poder: 21
Walterdf Va por buen camino
Fue solo un error de transcripción.

De todas maneras muchas gracias Mick!!!

Un abrazo
Responder Con Cita
  #4  
Antiguo 28-01-2008
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
En las versiones antiguas de delphi, la Clase TStringList toma como separador, además del que se indica con la propiedad Delimiter, todos los caracteres iguales o inferiores a #32 (el espacio), es decir que los espacios, tabuladores y demás siempre serán utilizados como separadores.

Esto era una característica bastante molesta, que además no tiene ninguna explicación, solo que a los programadores de delphi les pareció buena idea. Menos mal que en las nuevas versiones la clase TStringList cuenta con la propiedad StrictDelimiter, que cuando esta a TRUE fuerza a que solo el carácter indicado por la propiedad Delimiter sea tomado como un separador. Al menos así es al menos en mi versión de Turbo delphi, por lo que supongo que en delphi 2007, y puede que en 2006, ocurrirá lo mismo.
Responder Con Cita
  #5  
Antiguo 28-01-2008
Walterdf Walterdf is offline
Miembro
 
Registrado: may 2003
Ubicación: Buenos Aires
Posts: 152
Poder: 21
Walterdf Va por buen camino
Vaya problema!
Pensé que estaba metiendo la pata!!, le di vueltas y vueltas al problema y nada...

Muchas gracias seoane por desasnarme!!!!

Veremos como lo solucionamos.

Un abrazo a todos y gracias nuevamente!!!
Responder Con Cita
  #6  
Antiguo 28-01-2008
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
Podrías usar la clase TParser.

Aquí el hilo donde me desasnaron a mi , y me enseñaron la clase TParser

http://www.clubdelphi.com/foros/showthread.php?t=38818
Responder Con Cita
  #7  
Antiguo 29-01-2008
Walterdf Walterdf is offline
Miembro
 
Registrado: may 2003
Ubicación: Buenos Aires
Posts: 152
Poder: 21
Walterdf Va por buen camino
Excelente sugerencia, no conocía esa clase!!
Mil gracias!!

Un abrazo.
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Sobre los TStringList y el uso de Delimiter y DelimitedText Faust Varios 2 18-11-2007 00:32:52
TStrings a TStringList LeandroM Internet 1 27-09-2005 06:50:53
TStringList y TObjectList TinkerBell OOP 1 31-08-2005 14:00:06
TStringList esquerda21 Varios 10 19-01-2004 11:15:21
TStrings, DelimitedText y Delimiter __cadetill OOP 2 31-10-2003 16:33:00


La franja horaria es GMT +2. Ahora son las 16:17:35.


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