![]() |
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 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!! |
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 |
Fue solo un error de transcripción.
De todas maneras muchas gracias Mick!!! Un abrazo |
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. |
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!!! |
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 |
Excelente sugerencia, no conocía esa clase!!
Mil gracias!! Un abrazo. |
La franja horaria es GMT +2. Ahora son las 22:10:57. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi