Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 20-10-2011
Avatar de mRoman
mRoman mRoman is offline
Miembro
 
Registrado: nov 2003
Posts: 599
Poder: 21
mRoman Va por buen camino
Cargar archivo delimitado

Hola amigos, como están?

Nuevamente pidiendo su apoyo para resolver un problema q tengo. Les explico:

Tengo una archivo de tipo texto que esta delimitado por el simbolo pipe "|" y lo estoy cargando a un StringList y despues a un StringGrid, pero como que no me respeta el pipe cuando encuentra un espacio en blanco. Dentro del archivo esta algo como esto:

Código:
0000000002|002268176A|05/09/2011|225|18|1820002400||19|1|||||||||SALDAÑA|LUEVANO|SANDRA LUZ|OBREGON|439 |0 |TABASCO|PORTES GIL|BEIS|63200||CERCA DEL KINDER|18|18|1||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||1|1|1|24|07:15|19||20324739|SI
0000000002|002268176A|05/09/2011|225|18|1820002500||41|1|||||||||MAGAÑA|MERAZ|TANNIA|FRANCISCO SARABIA|125 |0 |CORONA|SIMON SANCHEZ|BEIS|63200||ABARROTES AGREDANO|18|18|1||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||1|2|2|17|07:45|41||20324742|SI
0000000005|002268176A|05/09/2011|225|18|1820002500||42|1|||||||||VALENZUELA|GARCIA|PETRA|SIMON SANCHEZ|603 |0 |JUSTO SIERRA|FRANCISCO SARABIA|BEIS|63200||MERCADITO SIMON SANCHEZ|18|18|1||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||1|2|2|17|07:45|42||20324743|SI
Dentro de la primer linea de texto esta la cadena de "|SANDRA LUZ|", esto delphi me lo carga en el StringGrid en columnas diferentes cuando lo mas lògico seria q lo cargue en una sola columna. He configurado las propiedas Delimiter y DelimitedText de ambos objetos (StringList y StringGrid) con el simbolo pipe.

Les paso el código completo de mi programa:

Código Delphi [-]
unit STRGList;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons, Grids, DB, DBTables;

type
  TForm1 = class(TForm)
    Label1: TLabel;
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    odAbrir: TOpenDialog;
    edNFichero: TEdit;
    lbCadenas: TListBox;
    sgCadenas: TStringGrid;
    Edit1: TEdit;
    procedure FormShow(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure BitBtn1Click(Sender: TObject);
  private
    { Private declarations }
    procedure RellenarLB();
    procedure RellenarSG();
  public
    { Public declarations }
    SL : TStringList;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormShow(Sender: TObject);
var
  nCol:Integer;
begin

  EdNFichero.Text := '';
  for nCol:=0 to SGCadenas.ColCount-1 do
  begin
//        SGCadenas.Cells[nCol,0] := 'Campo'+IntToStr(nCol);
  end;

  SL := TStringList.Create;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
    SL.Free;
end;

procedure TForm1.BitBtn1Click(Sender: TObject);
VAR
  NombreFichero: String;
begin
  IF ODAbrir.Execute THEN
  BEGIN
    NombreFichero := ODAbrir.FileName;
    IF NOT(FileExists(NombreFichero)) THEN
      ShowMessage('No se puede cargar el archivo ' + NombreFichero)
    ELSE
    BEGIN
//      SL.DelimitedText:='|';
      SL.Delimiter:='|';
      SL.DelimitedText:='|';
      SL.LoadfromFile(NombreFichero);
      EdNFichero.Text := NombreFichero;
      ShowMessage(SL.DelimitedText);
      RellenarLB;
      RellenarSG;
    END;
  END;
  SGCadenas.RowCount:=LBCadenas.Count;

end;

procedure tForm1.RellenarLB;
VAR
  i: Integer;
BEGIN
  LBCadenas.Clear;
  FOR i := 0 TO SL.Count - 1 DO
  begin
    LBCadenas.Items.Add(SL.Strings[i]);
  end;
END;

procedure tForm1.RellenarSG;
VAR
  i: Integer;
  PosIni,PosFin,Lin,Col: Integer;

  NombreParametro: String;
BEGIN

      FOR i := 0 TO SL.Count - 1 DO
      BEGIN

          SGCadenas.Rows[i].Delimiter:='|';
          SGCAdenas.Rows[i].DelimitedText:=SL.Strings[i];

      END;
END;
end.

Que me hace falta para que se cargue bien las cadenas q contienen espacios en blanco en una sola columna de mi StringGrid. He visto opciones con ADO, pero requiere de hacer cambios al regedit y no quiero irme hasta alla ya que es algo mas laborioso para el usuario final, en otras palabras le tengo q explicar como hacerlo ya que no estaré ahi para hacerlo yo, entonces no es opción.

Espero me puedan ayudar.

TRABAJO CON DELPHI 6.

Saludos !!!
__________________
Miguel Román

Afectuoso saludo desde tierras mexicanas....un aguachile?, con unas "cetaseas" bien "muertas"?, VENTE PUES !!
Responder Con Cita
  #2  
Antiguo 20-10-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

La función ExtractStrings, delimita el texto correctamente.

Ejemplo:
Código Delphi [-]
var
  st: string;
begin
  st:='0000000002|002268176A|05/09/2011|225|18|1820002400||19|1|||||||||SALDAÑA|LUEVANO|SANDRA LUZ|OBREGON|439 |0 |TABASCO|PORTES GIL|BEIS|63200||CERCA DEL KINDER|18|18|1||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||1|1|1|24|07:15|19||20324  739|SI';
  ExtractStrings(['|'], [' '], PChar(st), StringGrid1.Rows[0]);
end;
Pero no sé si Delphi 6 la incluye. De no estar, revisá este hilo, donde hay maneras alternativas de realizarlo.

Un saludo.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 20-10-2011
Avatar de mRoman
mRoman mRoman is offline
Miembro
 
Registrado: nov 2003
Posts: 599
Poder: 21
mRoman Va por buen camino
Cita:
Empezado por ecfisa Ver Mensaje
Hola.

La función ExtractStrings, delimita el texto correctamente.

Ejemplo:
Código Delphi [-]
var
  st: string;
begin
  st:='0000000002|002268176A|05/09/2011|225|18|1820002400||19|1|||||||||SALDAÑA|LUEVANO|SANDRA LUZ|OBREGON|439 |0 |TABASCO|PORTES GIL|BEIS|63200||CERCA DEL KINDER|18|18|1||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||1|1|1|24|07:15|19||20324  739|SI';
  ExtractStrings(['|'], [' '], PChar(st), StringGrid1.Rows[0]);
end;
Pero no sé si Delphi 6 la incluye. De no estar, revisá este hilo, donde hay maneras alternativas de realizarlo.

Un saludo.
Gracias por la respuesta tan rápida. Te agradezco. Ya revisé en Delphi6 y si incluye la funcion...la probaré y les cuento luego como me fué.
__________________
Miguel Román

Afectuoso saludo desde tierras mexicanas....un aguachile?, con unas "cetaseas" bien "muertas"?, VENTE PUES !!
Responder Con Cita
  #4  
Antiguo 20-10-2011
Avatar de mRoman
mRoman mRoman is offline
Miembro
 
Registrado: nov 2003
Posts: 599
Poder: 21
mRoman Va por buen camino
Archivo delimitado por pipes SOLUCIONADO

Listo....ya probé tu solución y funciono a la perfeccion....

les paso el código donde hice la corrección.

Código Delphi [-]
procedure tForm1.RellenarSG;
VAR
  i: Integer;
  PosIni,PosFin,Lin,Col: Integer;

  NombreParametro: String;
BEGIN

      FOR i := 0 TO SL.Count - 1 DO
      BEGIN

          SGCadenas.Rows[i].Delimiter:='|';
//          SGCAdenas.Rows[i].DelimitedText:=SL.Strings[i];
         
          ExtractStrings(['|'],[' '],Pchar(SL.Strings[i]), SGCadenas.Rows[i]);
      END;
END;

Solo agrgue la linea q esta en azul y listo !!!...funciono...GRACIAS !!!
__________________
Miguel Román

Afectuoso saludo desde tierras mexicanas....un aguachile?, con unas "cetaseas" bien "muertas"?, VENTE PUES !!
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
Generar archivo delimitado desde tabla SQL delphisenda Varios 4 29-06-2007 15:50:16
Generar archivo delimitado desde tabla SQL Server delphisenda MS SQL Server 1 28-06-2007 23:21:09
Importar datos a access desde un archivo delimitado por comas luis juarez Conexión con bases de datos 1 10-05-2006 22:46:13
Cargar Archivo srangel JAVA 0 03-09-2004 21:19:15
Cargar archivo chm esocrates Varios 1 27-07-2003 09:58:02


La franja horaria es GMT +2. Ahora son las 22:46:19.


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