Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

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


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

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 00:11:28.


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