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

Arquivo Txt


YAKKOO(FEM)

Pergunta

14 respostass a esta questão

Posts Recomendados

  • 0

Num sei como ta montado esse arquivo, mas fiz um exemplo nessa estrutura:

0001-ANDRE FERNANDO

0002-CARLOS JOSE

0003-JOSE CARLOS DE ANDRADE

0004-FERNANDO ANDRE

0005-MARIA JOSE

00015-JOÃO CARLOS DA SILVA

Observe que o código e o nome ta separado por um ifem '-' (isso é crucial), dei o nome pro arquivo 'CLIENTES.TXT'.

Usei dois Edits, Edit1 e Edit2 (Edit1 --> onde digito o código e Edit2 onde traz o Nome do Cliente).

e no OnClick de um Button:

procedure TForm1.Button1Click(Sender: TObject);

var

  ArqTxt : TextFile;

  Linha, Codigo, Cliente : string;

  x : Integer;

  Achou : boolean;

begin

  AssignFile(ArqTxt,'C:\CLIENTES.txt');

  Reset(ArqTxt);

  Achou := False;

  while not eof(ArqTxt) do begin

     Readln(ArqTxt, Linha);

     Codigo := Copy(Linha,1,Pos('-',Linha)-1);

     x := Length(Linha) - Length(Codigo);

     Cliente := Copy(Linha,Pos('-',Linha)+1,x);

     if trim(Edit1.text) = Codigo then begin

        Edit2.Text := Cliente;

        Achou := True;

        Exit;

     end;

  end;

  Linha := '';

  Closefile(ArqTxt);

  if not Achou then begin

     Edit2.Text := '';

     ShowMessage('Codigo não encontrado!');

     Edit1.SetFocus;

  end;

end;

Ve se esse exemplo serve pro seu caso, se não servir, de um exemplo pratico de como ta no sei arquivo texto.

Abs. Progr'amador.

Link para o comentário
Compartilhar em outros sites

  • 0

Olá,

Aproveitando o código do Progr'amador biggrin.gif

Acrescenta o Edit3 ...


var
  ArqTxt : TextFile;
  Linha, Codigo, Cliente, Atendimento : string;
  x : Integer;
  Achou : boolean;

begin
  AssignFile(ArqTxt,'C:\CLIENTES.txt');
  Reset(ArqTxt);
  Achou := False;

  while not eof(ArqTxt) do begin
     Readln(ArqTxt, Linha);
     Codigo := Copy(Linha,1,Pos('-',Linha)-1);
     delete(Linha,1,Pos('-',Linha));
     Cliente := Copy(Linha,1,Pos('-',Linha)-1);
     x := Length(Linha) - Length(Cliente);
     Atendimento := Copy(Linha,Pos('-',Linha)+1,x);
     if trim(Edit1.text) = Codigo then begin
        Edit2.Text := Cliente;
        Edit3.Text := Atendimento;
        Achou := True;
        Exit;
     end;
  end;
  Linha := '';
  Closefile(ArqTxt);

  if not Achou then begin
     Edit2.Text := '';
     Edit3.Text := '';
     ShowMessage('Codigo não encontrado!');
     Edit1.SetFocus;
  end;
end;

Abs.

Kiko

Link para o comentário
Compartilhar em outros sites

  • 0

OI, FOCOU UM POKINHO DIFRENTE E ME ENROLEI TODA AKI..

O ARQUIVO QUE TEREI QUE LER SERA ASSIM:

111-ANNELISE-1-MEDICAMENTO2-MEDICAMENTO3

222-AMAURY-1-MEDICAMENTO2-MEDICAMENTO3

333-JOSE-1-MEDICAMENTO2-MEDICAMENTO3

444-MARIA-1-MEDICAMENTO2-MEDICAMENTO3

OBS.: OS MEDICAMENTOS SERAO INFINITOS, OU SEJA, não TEM UMA QUANTIDADE PRE-DETERMINADA.

SE alguém PUDER ME AJUDAR...

VALEU

BJIM

Link para o comentário
Compartilhar em outros sites

  • 0

DE UMA OLHADA NO CODIGO ABAIXO:

ELE PAEGAVA SOMENTE (111-JOAO-1). AGORA PRECISO ALTERA-LO PARA PEGAR (111-JOAO-1-MEDICAMENTO1-MEDICAMENTO2-MEDICAMENTO3...)

SERA Q você PODE ME AJUDAR?

///-----

var

ArqTxt : TextFile;

Linha, Codigo, Cliente, Atendimento : string;

x : Integer;

Achou : boolean;

begin

AssignFile(ArqTxt,'C:\CLIENTES.txt');

Reset(ArqTxt);

Achou := False;

while not eof(ArqTxt) do begin

Readln(ArqTxt, Linha);

Codigo := Copy(Linha,1,Pos('-',Linha)-1);

delete(Linha,1,Pos('-',Linha));

Cliente := Copy(Linha,1,Pos('-',Linha)-1);

x := Length(Linha) - Length(Cliente);

Atendimento := Copy(Linha,Pos('-',Linha)+1,x);

if trim(Edit1.text) = Codigo then begin

Edit2.Text := Cliente;

Edit3.Text := Atendimento;

Achou := True;

Exit;

end;

end;

Linha := '';

Closefile(ArqTxt);

if not Achou then begin

Edit2.Text := '';

Edit3.Text := '';

ShowMessage('Codigo não encontrado!');

Edit1.SetFocus;

end;

end;

Link para o comentário
Compartilhar em outros sites

  • 0

Olá, esse código está pegando 3 campos, comparando o primeiro e se for igual ao Edit1, está colocando o segundo e terceiro nos Edit2 e Edit3.

Há um pequeno erro na hora de dar o Exit, você não está fechando o arquivo; e a variável Achou não é necessária neste caso porque o próprio Exit já encerra a função.

Bom, aonde você irá jogar os outros campos restantes(MEDICAMENTO1-MEDICAMENTO2-MEDICAMENTO3...) ?

Link para o comentário
Compartilhar em outros sites

  • 0

Olá s3c,

Na verdade acho que esse Exit é que ta errado mesmo! fiz na pressa tongue.gif

Nesse caso essa variaval ACHOU é necessario sim, porque caso não encontre o valor digitado no Edit o ACHOU vai continuar como FALSE, com isso ele ira execultar o que ta no if not achou..., e esse Exit só é execultado se encontrar o valor. Pra enteder melhor veja o meu post acima ou o do kikonanet que ta melhor pra visializar e analizar. rolleyes.gif

Abs. Progr'amador. wink.gif

Link para o comentário
Compartilhar em outros sites

  • 0

Olá Progr'amador,

Mas se tirar o Exit e no caso de encontrar, a leitura do arquivo continuará até o final desnecessariamente. Não seria melhor p/ otimização, tirar a variável Achou e colocar Closefile(ArqTxt) antes do Exit ?

Se o Exit não for executado, é porque ele não achou e cairá na mensagem.

Ou senão, deixar como está e trocar o Exit por um Break

Link para o comentário
Compartilhar em outros sites

  • 0

Olá, teste este código abaixo:

var f:TextFile; s:String; p:PChar; i:Integer;
begin
  Edit2.Text := '';
  Edit3.Text := '';
  Memo1.Clear;
  AssignFile(f, 'c:\Temp\xxx.txt');
  Reset(f);
  While not Eof(f) do
  begin
    Readln(f, s);
    p := PChar(s);
    if not SameText(Copy(p, 1, Pos('-', p)-1), Trim(Edit1.Text)) then
      Continue;
    Inc(p, Pos('-', p));
    i := 1;
    While Pos('-', p) > 0 do
    begin
      Inc(i);
      Case i of
        2 : Edit2.Text := Copy(p, 1, Pos('-', p)-1);
        3 : Edit3.Text := Copy(p, 1, Pos('-', p)-1);
        else
          Memo1.Lines.Add(Copy(p, 1, Pos('-', p)-1));
      end;
      Inc(p, Pos('-', p));
    end;
    Memo1.Lines.Add(p);
    CloseFile(f);
    Exit;
  end;
  CloseFile(f);
  ShowMessage('Codigo não encontrado!');
  Edit1.SetFocus
end;

Link para o comentário
Compartilhar em outros sites

  • 0

MENTIRA não CONSEGUI não.....

OLHA O COMANDO QUE TO USANDO:

var

ArqTxt : TextFile;

Linha, Codigo, Cliente, Atendimento, Leito, Medicamento : string;

x : Integer;

Achou : boolean;

begin

AssignFile(ArqTxt,'C:\PROCORDIS.txt');

Reset(ArqTxt);

Achou := False;

while not eof(ArqTxt) do begin

Readln(ArqTxt, Linha);

Codigo := Copy(Linha,1,Pos(';',Linha)-1);

delete(Linha,1,Pos(';',Linha));

Cliente := Copy(Linha,1,Pos(';',Linha)-1);

delete(Linha,1,Pos(';',Linha));

Leito := Copy(Linha,1,Pos(';',Linha)-1);

delete(Linha,1,Pos(';',Linha));

Atendimento := Copy(Linha,1,Pos(';',Linha)-1);

delete(Linha,1,Pos(';',Linha));

x := Length(Linha) - Length(Atendimento);

Medicamento := Copy(Linha,Pos(';',Linha)+1,x);

if trim(EditNProntuario.text) = Codigo then

begin

EditNomePaciente.Text := Cliente;

ComboBoxLeito.Text := Leito;

ComboBoxNAtendimento.Text := Atendimento;

MemoVaiParaPrescricao.Lines.Add(Medicamento);

Achou := True;

Exit;

end;

end;

Linha := '';

Closefile(ArqTxt);

O MEU ARQUIVO TXT É O SEGUINTE:

1669275;CARLOS MURILO ROCHA;1;1;MEDIC1;MEDIC2;MEDIC3;

1683894;WELLINGTON BRUNO DUTRA CUSTODIO;2;2;MEDIC1;MEDIC2;MEDIC3;

ELE LE TUDO DIREITINHO, SO QUE NA HORA DE MOSTRAR NO MEMO OS MEDICAMENTO ELE MOSTRA COMO TA NO TXT, QUERIA QUE DEPOIS DE CADA ;DO MEDICAMENTO FOSSE DADA UMA QUEBRA DE LINHA (ENTER).

SE PUDEREM MEAJUDAR ........

BRIGADIM

BJO

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
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...