Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 09-06-2008
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 19.449
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
¿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.
Archivos Adjuntos
Tipo de Archivo: zip Parse sample.zip (2,8 KB, 17 visitas)
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #2  
Antiguo 09-06-2008
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 25
Caro Va por buen camino
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
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #3  
Antiguo 09-06-2008
Paulao Paulao is offline
Miembro
 
Registrado: sep 2003
Ubicación: Rua D 31 Casa 1 - Inhoaíba - Rio de Janeiro - RJ - Brasil
Posts: 637
Poder: 23
Paulao Va por buen camino
Bueno, voy a intentarlo.
Responder Con Cita
  #4  
Antiguo 09-06-2008
Paulao Paulao is offline
Miembro
 
Registrado: sep 2003
Ubicación: Rua D 31 Casa 1 - Inhoaíba - Rio de Janeiro - RJ - Brasil
Posts: 637
Poder: 23
Paulao Va por buen camino
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
Responder Con Cita
  #5  
Antiguo 10-06-2008
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 25
Caro Va por buen camino
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
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #6  
Antiguo 10-06-2008
Paulao Paulao is offline
Miembro
 
Registrado: sep 2003
Ubicación: Rua D 31 Casa 1 - Inhoaíba - Rio de Janeiro - RJ - Brasil
Posts: 637
Poder: 23
Paulao Va por buen camino
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;
Responder Con Cita
  #7  
Antiguo 10-06-2008
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 25
Caro Va por buen camino
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
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
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
ftFmtMemo to text johurgi Varios 1 20-10-2006 17:45:01
Duda sobre Archivos enviados por medio de firebird sin guardarlo en la BD RONPABLO Firebird e Interbase 6 13-10-2006 23:49:44
Guardar lo que tengo en un Edit1.text y edit2.text en una base de datos firebird jorgeluisc Conexión con bases de datos 1 23-04-2006 18:29:28
Convertir Archivos DFM de binario a Texto (Text DFM) DiDi Varios 4 21-04-2005 19:39:43
duda sobre archivos de texto eduarcol Varios 4 05-02-2004 15:06:31


La franja horaria es GMT +2. Ahora son las 00:21:17.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi