Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Leer un fichero csv con campos separados por puntos y comas. (https://www.clubdelphi.com/foros/showthread.php?t=10570)

pablo73 22-05-2004 17:07:24

Leer un fichero csv con campos separados por puntos y comas.
 
Hola!

Tengo un fichero csv con campos separados por puntos y comas y necesito insertarlo en una tabla.
¿sabéis si existe alguna función parecida a la CommaText de un TStringList, pero que utilice como separador los puntos y comas?
¿o sabéis alguna otra forma de hacerlo?

Muchas gracias y un saludo.

roman 22-05-2004 18:11:19

El mismo StringList tiene la propiedad DelimitedText para tratar archivos con otros separadores. Si no mal recuerdo, especifcas el delimitador en la propiedad Delimiter.

// Saludos

pablo73 24-05-2004 14:12:32

Muchas gracias.

aprendiz_delphi 18-03-2020 18:41:13

Lo estoy usando pero no funciona correctamente, cuando hay espacios en blanco.
TEXTO1;TEXTO 2;TEXTO3

Al cargar el tstringlist me pone 4 elementos
TEXTO1
TEXTO
2
TEXTO3

ecfisa 18-03-2020 18:44:12

Hola.

Usa la función ExtractStrings.

Saludos :)

bucanero 19-03-2020 09:47:51

Hola!!

puedes realizar la separación de la cadena con un TStringList pero tienes que poner a true el parametro StrictDelimiter, que te eliminara las comillas envolventes del texto y solo realiza el corte en el delimitador.

Aquí te dejo un ejemplo simple de uso:

Código Delphi [-]
var
  parser: TStrings;
  i, j:Integer;
begin
  with TStringList.Create do
  try
    // lee los datos del fichero.
    // se podria utilizar cualquier otra metodo que lea linea  a linea
    LoadFromFile('c:\tmp\test_csv.csv');
    try
      parser := TStringList.Create;
      parser.StrictDelimiter := True;
      parser.Delimiter := ';';
      // recorre cada linea del fichero y extrae el valor de los campos
      for i := 0 to count - 1 do begin
        parser.DelimitedText := strings[i];
        Memo1.Lines.AddStrings(parser);
        Memo1.Lines.Add('');
      end;
    finally
      parser.free
    end;
  finally
    free;
  end;

Para leer un CSV relativamente simple te puede servir, si por el contrario las cadenas del CSV contienen saltos de linea o cosas mas complejas, entonces este método se queda corto y puede llegar a no ser valido


La franja horaria es GMT +2. Ahora son las 19:47:03.

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