mRoman |
20-10-2011 21:17:17 |
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
procedure RellenarLB();
procedure RellenarSG();
public
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
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.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 !!!
|