Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Duda con archivos text (https://www.clubdelphi.com/foros/showthread.php?t=57224)

Paulao 09-06-2008 14:32:36

Duda con archivos text
 
Seρores, tengo un archivo text y gustaria correr el archivo y buscar algunas palabras y grabar en un Memo o un archivo text mismo, pero ahora "parseado". En mi archivo abajo, mi gustaria de sacar los valores de las columnas: CCF:, COO:, NOME:, CNPJ/CPF CONSUMIDOR: Ahora despues de la string: ITEM CΣDIGO ST DESCRIΗΓO VL ITEM(R$), mi gustaria de pegor todo en otra linea asta la palabra SUBTOTAL R$. Abajo com es mi texto(): Es un texto grande, pero yo quizo poner asi, para usteds teneren una vision mejor y real de la situacion. Mire que nen siempre tenemos NOME: y CNPJ/CPF CONSUMIDOR:

Cita:

GARBO S/A
RUA ACHILLES ORLANDO CURTOLO, 551
SAO PAULO - SP
C.N.P.J.: 61.322.970/0001-06 I.E.: 100.499.619.113
FITA-DETALHE
Emissγo: 06/06/2008 10:43:39V
DATAi=01/05/2008 DATAf=06/06/2008
—————————————————————————————————————————————————————————
02/05/2008 16:22:32V CCF:001440 COO:002121
CNPJ/CPF CONSUMIDOR: 112.141.418-46
NOME: Sergio Zabeu
CUPOM FISCAL
ITEM CΣDIGO ST DESCRIΗΓO VL ITEM(R$)
1 00044313020078 T4 [T:4 ] CAMISA M/L S/B LISTRADO ON
1 x 63,00 63,00
2 00044313020193 T4 [T:4 ] CAMISA M/L S/B LISTRADO ON
1 x 63,00 63,00
3 00044368030099 T4 [T:4 ] CAMISA M/L ALGODAO LISTR 8
1 x 75,00 75,00
4 00033406030195 T4 [T:48L] CALCA S/ PREGA BOLSO FACA
1 x 108,00 108,00
——————————————————
SUBTOTAL R$ 309,00
DESCONTO ICMS: -9,00
——————————————————
TOTAL R$ 300,00
A VISTA 300,00
T4=18,00%
—————————————————————————————————————————————————————————
COMPRE MAIS E PAGUE MENOS
=========================
Visite nosso Site na Internet
http://www.garbo.com.br
————————————————————————————————————————————————
—————————————————————————————————————————————————————————
[ DGsuTF8IM3(xi6Sm(exGGEm8G1YKkVa3quCZq@?3A3RuWv ]
SWEDA IF ST100
ECF-IF VERSΓO: 01.00.04 ECF: 001 LJ: 0001
OPR: Garbo
**PKM*KH 02/05/2008 16:22:50V
FAB: SW010500000000000232 BR




GARBO S/A
RUA ACHILLES ORLANDO CURTOLO, 551
SAO PAULO - SP
C.N.P.J.: 61.322.970/0001-06 I.E.: 100.499.619.113
FITA-DETALHE
Emissγo: 06/06/2008 10:43:39V
DATAi=01/05/2008 DATAf=06/06/2008
—————————————————————————————————————————————————————————
02/05/2008 16:23:13V CCF:001441 COO:002122
CUPOM FISCAL
ITEM CΣDIGO ST DESCRIΗΓO VL ITEM(R$)
1 00104204110126 T4 [T:48 ] BERMUDA SARJA S/P BOL/FACA
1 x 72,00 72,00
——————————————————
TOTAL R$ 72,00
CARTAO 72,00
T4=18,00%
—————————————————————————————————————————————————————————
COMPRE MAIS E PAGUE MENOS
=========================
Visite nosso Site na Internet
http://www.garbo.com.br
————————————————————————————————————————————————
—————————————————————————————————————————————————————————
[ zGPIWbdTReNU8ZQj?zUhFJSZFwfyBfAEmsUtA64bqhtWYC ]
SWEDA IF ST100
ECF-IF VERSΓO: 01.00.04 ECF: 001 LJ: 0001
OPR: Garbo
**P@P@KH 02/05/2008 16:23:27V
FAB: SW010500000000000232 BR




GARBO S/A
RUA ACHILLES ORLANDO CURTOLO, 551
SAO PAULO - SP
C.N.P.J.: 61.322.970/0001-06 I.E.: 100.499.619.113
FITA-DETALHE
Emissγo: 06/06/2008 10:43:39V
DATAi=01/05/2008 DATAf=06/06/2008
—————————————————————————————————————————————————————————
02/05/2008 16:23:41V CCF:001442 COO:002123
CUPOM FISCAL
ITEM CΣDIGO ST DESCRIΗΓO VL ITEM(R$)
1 00144075030190 T4 [T:M ] MEIA ALGODAO R/1400-01 REF
1 x 18,00 18,00
2 00144075030060 T4 [T:M ] MEIA ALGODAO R/1400-01 REF
1 x 18,00 18,00
3 00144075030030 T4 [T:M ] MEIA ALGODAO R/1400-01 REF
1 x 18,00 18,00
item cancelado: 3 -18,00
4 00014047020173 T4 [T:56M] COSTUME 3 BOT. C/ 2 ABERT.
1 x 330,00 330,00
——————————————————
TOTAL R$ 366,00
A VISTA 366,00
T4=18,00%
—————————————————————————————————————————————————————————
COMPRE MAIS E PAGUE MENOS
=========================
Visite nosso Site na Internet
http://www.garbo.com.br
————————————————————————————————————————————————
—————————————————————————————————————————————————————————
[ y(@PMzSEFYkQZ8U@7WQ99cZS*Uh7@JUr?hcnakgY@EpC*R ]
SWEDA IF ST100
ECF-IF VERSΓO: 01.00.04 ECF: 001 LJ: 0001
OPR: Garbo
**HH$HKH 02/05/2008 16:24:33V
FAB: SW010500000000000232 BR




GARBO S/A
RUA ACHILLES ORLANDO CURTOLO, 551
SAO PAULO - SP
C.N.P.J.: 61.322.970/0001-06 I.E.: 100.499.619.113
FITA-DETALHE
Emissγo: 06/06/2008 10:43:39V
DATAi=01/05/2008 DATAf=06/06/2008
—————————————————————————————————————————————————————————
02/05/2008 16:24:43V CCF:001443 COO:002124
CUPOM FISCAL
ITEM CΣDIGO ST DESCRIΗΓO VL ITEM(R$)
1 00014047020173 T4 [T:56M] COSTUME 3 BOT. C/ 2 ABERT.
1 x 330,00 330,00
——————————————————
SUBTOTAL R$ 330,00
DESCONTO ICMS: -9,50
——————————————————
TOTAL R$ 320,50
A VISTA 320,50
T4=18,00%
—————————————————————————————————————————————————————————
COMPRE MAIS E PAGUE MENOS
=========================
Visite nosso Site na Internet
http://www.garbo.com.br
————————————————————————————————————————————————
—————————————————————————————————————————————————————————
[ H(LveIQ3LGS6Sm(ByJ6r#MBQVQE?jv@IH91jZNKI1Sje3V ]
SWEDA IF ST100
ECF-IF VERSΓO: 01.00.04 ECF: 001 LJ: 0001
OPR: Garbo
**HC!HKH 02/05/2008 16:25:23V
FAB: SW010500000000000232 BR




GARBO S/A
RUA ACHILLES ORLANDO CURTOLO, 551
SAO PAULO - SP
C.N.P.J.: 61.322.970/0001-06 I.E.: 100.499.619.113
FITA-DETALHE
Emissγo: 06/06/2008 10:43:39V
DATAi=01/05/2008 DATAf=06/06/2008
—————————————————————————————————————————————————————————
02/05/2008 16:25:30V CCF:001443 COO:002125
CUPOM FISCAL
CANCELAMENTO

Cancelamento de Cupom Fiscal (CCF): 001443
COO do Cupom Fiscal cancelado: 002124
Total da operaηγo R$: 320,50
Desconto cancelado: 9,50
—————————————————————————————————————————————————————————
[ E(xZ?4htUxWrIcF#Was2wUfewf2CR(Fnz7muVPT4cF@k(N ]
SWEDA IF ST100
ECF-IF VERSΓO: 01.00.04 ECF: 001 LJ: 0001
OPR: Garbo
**HC!HKH 02/05/2008 16:25:31V
FAB: SW010500000000000232 BR




GARBO S/A
RUA ACHILLES ORLANDO CURTOLO, 551
SAO PAULO - SP
C.N.P.J.: 61.322.970/0001-06 I.E.: 100.499.619.113
FITA-DETALHE
Emissγo: 06/06/2008 10:43:39V
DATAi=01/05/2008 DATAf=06/06/2008
—————————————————————————————————————————————————————————
02/05/2008 16:25:55V CCF:001444 COO:002126
CUPOM FISCAL
ITEM CΣDIGO ST DESCRIΗΓO VL ITEM(R$)
1 00044313020076 T4 [T:5 ] CAMISA M/L S/B LISTRADO ON
1 x 63,00 63,00
——————————————————
SUBTOTAL R$ 63,00
acrιscimo 10,50
——————————————————
TOTAL R$ 73,50
A VISTA 73,50
T4=18,00%
—————————————————————————————————————————————————————————
COMPRE MAIS E PAGUE MENOS
=========================
Visite nosso Site na Internet
http://www.garbo.com.br
————————————————————————————————————————————————
—————————————————————————————————————————————————————————
[ ?(?Vh3jGJrim(BydALmcc9@1p8MQZu8CXMBkjnqrdrnJIp ]
SWEDA IF ST100
ECF-IF VERSΓO: 01.00.04 ECF: 001 LJ: 0001
OPR: Garbo
**H*$*HH 02/05/2008 16:26:21V
FAB: SW010500000000000232 BR




GARBO S/A
RUA ACHILLES ORLANDO CURTOLO, 551
SAO PAULO - SP
C.N.P.J.: 61.322.970/0001-06 I.E.: 100.499.619.113
FITA-DETALHE
Emissγo: 06/06/2008 10:43:39V
DATAi=01/05/2008 DATAf=06/06/2008
—————————————————————————————————————————————————————————
02/05/2008 16:26:39V CCF:001445 COO:002127
CNPJ/CPF CONSUMIDOR: 112.141.418-46
NOME: Sergio Zabeu
CUPOM FISCAL
ITEM CΣDIGO ST DESCRIΗΓO VL ITEM(R$)
1 00043997110110 T4 [T:5 ] CAMISA M/L S/B POPELINE LI
1 x 54,00 54,00
——————————————————
SUBTOTAL R$ 54,00
DESCONTO ICMS: -0,40
——————————————————
TOTAL R$ 53,60
A VISTA 53,60
T4=18,00%
—————————————————————————————————————————————————————————
COMPRE MAIS E PAGUE MENOS
=========================
Visite nosso Site na Internet
http://www.garbo.com.br
————————————————————————————————————————————————
—————————————————————————————————————————————————————————
[ gG7zDPasuC4AdyB(mvAffedaRB#m(oBT2#JiS4NC(d1oR* ]
SWEDA IF ST100
ECF-IF VERSΓO: 01.00.04 ECF: 001 LJ: 0001
OPR: Garbo
**H**$HH 02/05/2008 16:28:09V
FAB: SW010500000000000232 BR

Neftali [Germαn.Estιvez] 09-06-2008 15:10:13

1 Archivos Adjunto(s)
ΏY exactamente cual es el problema?
Parsear el archivo es sencillo.
Puedes cargarlo en un TStrings/Memo y recorrerlo lνnea a lνnea buscando los caracteres o palabras que necesites.

Utiliza AnsiPos para encontrar las cedenas: CCF: COO: ...

Aquν te paso un ejemplos sencillo a ver si es esto lo que necesitas.

Caro 09-06-2008 16:55:00

Hola Paulao, te pongo otro ejemplo.

Cσdigo Delphi [-]
function TForm1.Contenido(Linea, Cadena : String; PosInicio:Integer): String;
var
 CadRestante : String;
 PosFinal       : Integer;
 Resultado     : String;
begin
 CadRestante := Copy(Linea, PosInicio+Length(Cadena), Length(Linea));
 if CadRestante[1] =' ' then
  CadRestante := Copy(CadRestante, 2, Length(CadRestante)-1);
 PosFinal := Pos(' ', CadRestante);
 if PosFinal >0 then
  Resultado := Copy(CadRestante, 1, PosFinal-1)
 else
  Resultado := Copy(CadRestante, 1, Length(CadRestante));
 Result := Resultado;
end;
 
procedure TForm1.Button1Click(Sender: TObject);
var
 Archivo  : TextFile;
 Linea    : String;
 BandItem : Boolean;
 PosInicio, PosItem  : Integer;
 Cont : String;
begin
 AssignFile(Archivo, 'archivo.txt');
 Reset(Archivo);
 BandItem := False;
 While not Eof(Archivo) do
  begin
   Readln(Archivo, Linea);
 
   PosItem := Pos('ITEM', Linea);
   if (PosItem<>0) or (BandItem) then
    begin
     BandItem := True;
     Memo1.Lines.Add(Linea);
     if Pos('SUBTOTAL', Linea)>0 then
      BandItem := False;
    end
   else
    begin
     PosInicio := Pos('CCF:', Linea);
     if PosInicio>0 then
      begin
       showmessage(Contenido(Linea, 'CCF:',PosInicio));
       PosInicio := 0;
      end;
     PosInicio := Pos('COO:', Linea);
     if PosInicio>0 then
      begin
       showmessage(Contenido(Linea, 'COO:',PosInicio));
       PosInicio := 0;
      end;
     PosInicio := Pos('CNPJ/CPF CONSUMIDOR:', Linea);
     if PosInicio>0 then
      begin
       showmessage(Contenido(Linea, 'CNPJ/CPF CONSUMIDOR:',PosInicio));
       PosInicio := 0;
      end;
     PosInicio := Pos('NOME:', Linea);
     if PosInicio>0 then
      begin
       showmessage(Contenido(Linea, 'NOME:',PosInicio));
       PosInicio := 0;
      end;
    end;
  end;
end;

Saluditos

Paulao 09-06-2008 17:59:41

Bueno, voy a intentarlo.

Paulao 09-06-2008 19:19:04

Bueno, esta ultima funcion, me lo tras todo el contenido del archivo. Yo tengo dificuldad de trabajar con archivos text. O que yo quero es hacer con que los valores de CCF, COO, CPF venga un al lado de otro, formando una string y abajo viene los valores de itenes, asi:

Cita:

0014400022011214141846 aca tiene CCF(6 posiciones + COO + CPF)

y estes son los itenes que fueron vendido en el CCF arriba
00044313020078
00044313020193
00044368030099
00033406030195

Caro 10-06-2008 05:08:49

Hola de nuevo Paulao, la primera funciσn no he cambiado nada, lo que esta dentro del boton si, te pongo el codigo, no se si te he entendido bien, pero de hecho tienes que seguir haciendo mas controles.

Cσdigo Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
 Archivo  : TextFile;
 Linea    : String;
 BandItem,
 BandCabecera : Boolean;
 PosInicio, PosItem, PosIt  : Integer;
 CadItem,
 Cadena   : String;
begin
 AssignFile(Archivo, 'pru.txt');
 Reset(Archivo);
 BandItem := False;
 BandCabecera := False;
 Cadena := '';
 While not Eof(Archivo) do
  begin
   Readln(Archivo, Linea);
   PosItem := Pos('ITEM', Linea);
   if (PosItem<>0) or (BandItem) then
    begin
     BandItem := True;
     if BandCabecera=False then
      begin
       Memo1.Lines.Add(Cadena);
       BandCabecera := True;
      end;
     CadItem := Copy(Linea, 3, Length(Linea));
     PosIt := Pos(' ',CadItem);
     if PosIt>0 then
      CadItem := Copy(CadItem, 1, PosIt-1);
     Memo1.Lines.Add(CadItem);
     if Pos('SUBTOTAL', Linea)>0 then
      BandItem := False;
    end
   else
    begin
     PosInicio := Pos('CCF:', Linea);
     if PosInicio>0 then
      begin
       Cadena := Cadena + Contenido(Linea, 'CCF:',PosInicio);
       PosInicio := 0;
      end;
     PosInicio := Pos('COO:', Linea);
     if PosInicio>0 then
      begin
       Cadena := Cadena + Contenido(Linea, 'COO:',PosInicio);
       PosInicio := 0;
      end;
     PosInicio := Pos('CNPJ/CPF CONSUMIDOR:', Linea);
     if PosInicio>0 then
      begin
       Cadena := Cadena + Contenido(Linea, 'CNPJ/CPF CONSUMIDOR:',PosInicio);
       PosInicio := 0;
      end;
     PosInicio := Pos('NOME:', Linea);
     if PosInicio>0 then
      begin
       Cadena := Cadena + Contenido(Linea, 'NOME:',PosInicio);
       PosInicio := 0;
      end;
    end;
  end;
end;

Saluditos

Paulao 10-06-2008 15:04:08

Hola, caro, hizo este codigo y me lo da el resultado que yo quiero, con una excepcion. Necesito crear una forma de buscar los itenes tambiem y yo puedo tener un solo iten o mas, y ahora estoy viendo como hacer un for o while para llenar mi stringlist con los itenes. Esta ahora es mi duda.
Cita:

procedure TForm1.BitBtn4Click(Sender: TObject);
var
Arq: TextFile;
s,Path:String;
ccf,coo,cpf,nome:String;
Linha: TStringList;
PosIni,j: Integer;
begin
Linha := TStringList.Create;
Path := 'C:\Sweda\Destino\Teste.TXT';
AssignFile(Arq,Path);
Reset(Arq);
while not Eof(arq) do
begin
Readln(Arq,s);
j := AnsiPos('CCF:',s);
PosIni := Pos('CCF:',s);
if j <> 0 then
ccf := Copy(s, PosIni+5, 6);

j := AnsiPos('COO:',s);
PosIni := Pos('COO:',s);
if j <> 0 then
coo := Copy(s, PosIni+5,6);

j := AnsiPos('CNPJ/CPF CONSUMIDOR:',s);
PosIni := Pos('CNPJ/CPF CONSUMIDOR:',s);
if j <> 0 then
cpf := Copy(s, PosIni+21,14);

j := AnsiPos('NOME',s);
PosIni := Pos('NOME:',s);
if j <> 0 then
nome := Copy(s, PosIni+6, 35);

j := AnsiPos('CUPOM FISCAL',S);
if j <> 0 then
Linha.Add(ccf+coo+cpf+nome);
end;

Memo1.Lines.Add(Linha.Text);

CloseFile(Arq);
end;

Caro 10-06-2008 15:42:51

Hola Paulao, has probado mi codigo, el ultimo que puse, en el primer if "if (PosItem<>0) or (BandItem) then" justamente se obtiene los item que tienes en tu archivo como tu dijiste, desde la palabra ITEM hasta que aparezca un SubTotal. Pruebalo, como te dije en mi mensaje anterior, puede que tengas que controlar algunas cosas mas.

Saluditos

Paulao 10-06-2008 17:42:31

Hola caro, hizo si, pero viene muchas informaciones que no necesito. Viene las informaciones que yo quiero y otras tambienm por esto opte por este codigo que hizo, pero aun tiene cosas a hacer para que me lo de el resultado corecto.


La franja horaria es GMT +2. Ahora son las 13:33:34.

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