YAKKOO(FEM) Postado Abril 26, 2005 Denunciar Share Postado Abril 26, 2005 galera..tiudo beim?!aki,to pecisando do seguinte:existem dados gravados em um txt (codigo, nome cliente), gostaria de q quando eu digitasse um codigo q esta neste txt o nome aparece em seu devido campo. Existe a possibilidade de fazer isso?Valeu galera.bjos Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Progr'amador Postado Abril 26, 2005 Denunciar Share Postado Abril 26, 2005 Num sei como ta montado esse arquivo, mas fiz um exemplo nessa estrutura:0001-ANDRE FERNANDO0002-CARLOS JOSE0003-JOSE CARLOS DE ANDRADE0004-FERNANDO ANDRE0005-MARIA JOSE00015-JOÃO CARLOS DA SILVAObserve 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. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 YAKKOO(FEM) Postado Abril 27, 2005 Autor Denunciar Share Postado Abril 27, 2005 PODE SER ASSIM, DESSE JEITO,...SO MAIS UMA COISA, E SE EU QUISER ACRECENTAR MAIS UM DADO. POR EXEMPLO:123-JOAQUIM-80SERIA O CODIGO, O CLIENTE E O ATENDIMENTOQUERIA ACRECENTAR O ATENDIMENTOVALEU...MT PELA AJUDA Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Kikonanet Postado Abril 27, 2005 Denunciar Share Postado Abril 27, 2005 Olá,Aproveitando o código do Progr'amador 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 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 YAKKOO(FEM) Postado Abril 28, 2005 Autor Denunciar Share Postado Abril 28, 2005 OI, FOCOU UM POKINHO DIFRENTE E ME ENROLEI TODA AKI..O ARQUIVO QUE TEREI QUE LER SERA ASSIM:111-ANNELISE-1-MEDICAMENTO2-MEDICAMENTO3222-AMAURY-1-MEDICAMENTO2-MEDICAMENTO3333-JOSE-1-MEDICAMENTO2-MEDICAMENTO3444-MARIA-1-MEDICAMENTO2-MEDICAMENTO3OBS.: OS MEDICAMENTOS SERAO INFINITOS, OU SEJA, não TEM UMA QUANTIDADE PRE-DETERMINADA.SE alguém PUDER ME AJUDAR...VALEU BJIM Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 s3c Postado Abril 28, 2005 Denunciar Share Postado Abril 28, 2005 você quer ler esse arquivo e fazer o que depois ? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 YAKKOO(FEM) Postado Abril 28, 2005 Autor Denunciar Share Postado Abril 28, 2005 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; Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 s3c Postado Abril 28, 2005 Denunciar Share Postado Abril 28, 2005 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...) ? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Progr'amador Postado Abril 28, 2005 Denunciar Share Postado Abril 28, 2005 Olá s3c,Na verdade acho que esse Exit é que ta errado mesmo! fiz na pressa 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. Abs. Progr'amador. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 s3c Postado Abril 28, 2005 Denunciar Share Postado Abril 28, 2005 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 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 YAKKOO(FEM) Postado Abril 29, 2005 Autor Denunciar Share Postado Abril 29, 2005 BOM DIA ... VOU COLOCAR: MEDIAMENTO 1- MEDICAMENTO 2 .....EM UM MEMO. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 s3c Postado Abril 29, 2005 Denunciar Share Postado Abril 29, 2005 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; Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 YAKKOO(FEM) Postado Abril 29, 2005 Autor Denunciar Share Postado Abril 29, 2005 VALEU COLEGA, ONSEGUI LER OS DADOS CERTINHOS AKI..VALEUBJIM Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 YAKKOO(FEM) Postado Abril 29, 2005 Autor Denunciar Share Postado Abril 29, 2005 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 ........BRIGADIMBJO Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 s3c Postado Abril 29, 2005 Denunciar Share Postado Abril 29, 2005 Bom, esse código não tem nada a ver com aquele que te passei. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
YAKKOO(FEM)
galera..tiudo beim?!
aki,to pecisando do seguinte:
existem dados gravados em um txt (codigo, nome cliente), gostaria de q quando eu digitasse um codigo q esta neste txt o nome aparece em seu devido campo. Existe a possibilidade de fazer isso?
Valeu galera.
bjos
Link para o comentário
Compartilhar em outros sites
14 respostass a esta questão
Posts Recomendados
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.