Ir para conteúdo
Fórum Script Brasil
  • 0

Encontrar dados em arquivo .txt


João Paulo Taraciuk

Pergunta

Boa tarde

Novamente venho pedir ajuda aos colegas de fórum.

Tenho que pegar alguns dados de um arquivo txt digamos, tabulado, que no caso seria o arquivo do sintegra.

o que eu preciso é pegar os arquivos 75, que seria o cadastro de produtos para fazer um copy neles e tirar algumas informacoes para enviar para uma base de dados, mas não estou sabendo fazer isso, localizar as linhas que iniciam com 75 para fazer um copy neles.

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0
eu preciso é pegar os arquivos 75, que seria o cadastro de produtos para fazer um copy neles e tirar algumas informacoes para enviar para uma base de dados, mas não estou sabendo fazer isso, localizar as linhas que iniciam com 75 para fazer um copy neles.

seria algo como isto

procedure TForm1.Button1Click(Sender: TObject);
var
   Arquivo: TextFile; Texto, line : string;
begin
   Memo1.Clear;
   AssignFile(Arquivo, 'C:\Sintegra.Txt');
   Reset(Arquivo);
   while not EOF(Arquivo) do
      begin
        ReadLn(Arquivo, Line);
        Texto := Line;
        if pos('75',texto) > 0 then
           Memo1.Lines.Append(line);
      end;
   CloseFile(Arquivo);

end;

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

Deu certo aqui, porém surgiu outro problema, todos os produtos tem que ter unidade de medida para que eu possa utilizar, eu consegui fazer jogar para um ClientDataSet os produtos que estão no txt e não tem a unidade, teria como eu inserir somente a unidade na linha determinada e na posição determinada ?

O código que eu utilizei para jogar os dados para um ClientDataSet é esse:

procedure TForm1.Valida;

var

Arq : TextFile;

a : String;

contador : Integer;

begin

contador:=0;

ClientDataSet2.Close;

ClientDataSet2.CreateDataSet();

ClientDataSet2.Active:=True;

AssignFile(Arq, edt_sintegra.Text);

Reset(Arq);

Readln(Arq, linha );

while not Eof(Arq)do

begin

contador:=contador+1;

if(Pos('75', linha))=1 then

begin

a:=Trim(copy(linha,94,6)); //------------------Aqui é o local que fica a Unidade de medida.

if a='' then

begin

ClientDataSet2.Append;

ClientDataSet2codigo.Value:=StrToInt(copy(linha,19,14));

ClientDataSet2descricao.Value:=copy(linha,41,53);

ClientDataSet2un.Value:=copy(linha,94,6);

ClientDataSet2linha.Value:=contador;

ClientDataSet2.Post;

end;

end;

Readln(arq, linha);

end ;

Form3.ShowModal;

end;

Criei essa procedure para validar o arquivo, verificando onde tem produtos sem unidade de medida indicada.

Aí eu to jogando para um DBGrid o Código do Produto, a Descrição, e unidade e a Linha do mesmo no arquivo texto.

Tem como eu inserir a unidade na posição desejada dentro do arquivo texto sem alterar o restante do conteúdo do mesmo ?

Obrigado pela ajuda

Link para o comentário
Compartilhar em outros sites

  • 0
Tem como eu inserir a unidade na posição desejada dentro do arquivo texto sem alterar o restante do conteúdo do mesmo ?

teria como eu inserir somente a unidade na linha determinada e na posição determinada ?

voce pode usar o comando insert

exemplo:

var
  S: string;
begin
  S := 'Honest Lincoln';
  Insert('Abe ', S, 8);      { 'Honest Abe Lincoln' }
end;
Aqui voce percebe que o texto 'Abe' foi inserido a partir da oitava coluna do texto da string S No caso do arquivo sintegra voce vai perceber que ao inserir a unidade na linha determinada e na posição determinada, ocorrerá um deslocamento do texto restante no mesmo comprimento do texto inserido para contornar esse problema, voce pode usar o comando delete exemplo:
var
   s: string;
 begin
   s := 'Honest Abe Lincoln';
   Delete(s,8,4);
   Canvas.TextOut(10, 10, s);    { 'Honest Lincoln' }
 end;

Então a partir da inserção do texto e a quantidade de caracteres que possui este texto + 1, voce deleta a partir dessa posição o mesmo numero de caracteres inserido na linha determinada.

Esta seria uma das maneiras... porém, existem algumas complicações na leitura e escrita de arquivos textos

Veja o que consegue fazer

abraço

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...