ederverza 0 Denunciar post Postado Maio 28, 2007 Ola, preciso converter para base de dados um arquivo txt com os campos separados por ponto e vírgula,como faço essa leitura ?Agradecido;Eder Roberto Compartilhar este post Link para o post Compartilhar em outros sites
marcio.theis 3 Denunciar post Postado Maio 28, 2007 Para ler o arquivo basta fazer: procedure TForm1.BitBtn1Click(Sender: TObject);var str: string; txt: TextFile;beginAssignFile(txt, 'caminho do arquivo');{$I-}Reset(txt);{$I+}if IOResult <> 0 then Application.MessageBox('Erro ao abrir o arquivo !','Arquivo',MB_OK or MB_APPLMODAL or MB_ICONWARNING)else begin while not Eof(txt) do begin Readln(txt,str); //variavel STR irá conter as informações da linha em questão, basta separar as informações conforme quiser end; end;CloseFile(txt);end; Compartilhar este post Link para o post Compartilhar em outros sites
ederverza 0 Denunciar post Postado Maio 28, 2007 na verdade separar eh o meu problema.....ler a linha beleza...agora separar eh o mais complicado.....ainda mais que os campos nunca estaum na mesma posicao.... Compartilhar este post Link para o post Compartilhar em outros sites
marcio.theis 3 Denunciar post Postado Maio 28, 2007 você precisa apenas pegar a linha, colocar em um for de acordo com o tamanho, e sempre que encontrar o ; separar o valor e armazenar em variavel ou um StringList, tente montar alguma coisas, caso não consiga fazer, coloque aqui no tópico.O n° de campos da linha sempre vai ser o mesmo ? Compartilhar este post Link para o post Compartilhar em outros sites
ederverza 0 Denunciar post Postado Maio 28, 2007 isso...o numero de campos vai sempre ser o mesmo em cada linha......eu vou tentar aki ..qq duvida posto ai....falew.. Compartilhar este post Link para o post Compartilhar em outros sites
marcio.theis 3 Denunciar post Postado Maio 28, 2007 ok, tente fazer, se não conseguir, coloca os fontes que montou... Compartilhar este post Link para o post Compartilhar em outros sites
ederverza 0 Denunciar post Postado Maio 28, 2007 Vou fazer da seguinte forma.... Dados := copy(Linha,0,Pos(';',Linha)-1); linha := copy(Linha,Pos(';',Linha)+2,Length(Linha));a variavel linha vai receber ela mesma menos o conteudo que eu preciso...assim a cada vez q passar, eu retiro da linha o conteudo que preciso para cada campo da tabela..ai vou pegando sempre os primeiros caracteres ate o ';'....certo....faleu pela ajuda...abraços Compartilhar este post Link para o post Compartilhar em outros sites
marcio.theis 3 Denunciar post Postado Maio 28, 2007 beleza, se funcionar pode ser assim mesmo... :D Compartilhar este post Link para o post Compartilhar em outros sites
deio 0 Denunciar post Postado Maio 28, 2007 tive um problema parecido com o seu uma vez, dai perguntei em outro forum e a resposta q me deram talvez funcione no seu : Begin cr := chr(13); lf := chr(10); While (iPos>0) do Begin If Copy(abrir,iPos,1)=';' then Begin sLeft := Copy(abrir,1,iPos-1); sRight := Copy(abrir,iPos+1,Length(abrir)-iPos); Break; End; iPos := iPos-1; nome := sright; End; o sleft receberá tudo antes do ' ; ' e o sright receberá tudo depois do mesmo.... Compartilhar este post Link para o post Compartilhar em outros sites