Fórum Importar arquivo TXT? #228987
30/04/2004
0
Estou querendo importar um arquivo txt com a seguinte estrutura:
Nome
End
Cidade
Estado
CEP
linha em branco
linha em branco
linha em branco
Nome
End
Cidade
Estado
CEP
linha em branco
linha em branco
linha em branco
como faço para pegar esses dados e gravar por ex. a linha 1, linha 9, linha 17 e assim por diante... para o campo nome da minha tb?
E_marcello
Curtir tópico
+ 0Posts
02/05/2004
E_marcello
Será que algém teria alguma dica?
Gostei + 0
02/05/2004
Beppe
var Dados: TextFile; Nome, End, Cidade, Estado, CEP: String; begin AssignFile(Dados, ´C:\dados.txt´); Reset(Dados); try while not Eof(Dados) do begin Readln(Dados, Nome); Readln(Dados, End); Readln(Dados, Cidade); Readln(Dados, Estado); Readln(Dados, CEP); Readln(Dados); Readln(Dados); Readln(Dados); // faz algo com as variáveis // ex: Tabela.Adiciona(Nome); end; finally CloseFile(Dados); end; end;
Gostei + 0
02/05/2004
E_marcello
O arquivo está assim:
JOAO
RUAXXXX
CENTRO
RECIFE
53000000
Linha em branco
Linha em branco
Linha em branco
JOSE
AV. YYYYYY
CENTRO
50000000
Linha em branco
Linha em branco
Linha em branco
Obrigado!
Gostei + 0
02/05/2004
Aroldo Zanela
Existem várias formas para se implementar isto, eu fiz da seguinte forma:
procedure TForm1.Button1Click(Sender: TObject); type TRegistro = Record Nome: String; Endereco: String; Cidade: String; Estado: String; CEP: String; end; var Arquivo: TStringList; Registro: TRegistro; Laco, Linhas, Campos: Integer; begin Arquivo := TStringList.Create; Arquivo.LoadFromFile(´c:\temp\arquivo.txt´); Linhas := Arquivo.Count-1; Campos:= 0; For Laco := 0 to Linhas do begin if Campos < 7 then begin Case Campos of 0: Registro.Nome:= Arquivo.Strings[Laco]; 1: Registro.Endereco := Arquivo.Strings[Laco]; 2: Registro.Cidade:= Arquivo.Strings[Laco]; 3: Registro.Estado:= Arquivo.Strings[Laco]; 4: Registro.CEP:= Arquivo.Strings[Laco]; end; Inc(Campos) end else begin ShowMessage(Registro.Nome); // Faça algo com o registro Campos := 0; end; end; Arquivo.Free; end;
Espelho do arquivo (arquivo.txt) em c:\temp:
Aroldo End Cidade Estado CEP linha em branco linha em branco linha em branco Zanela End Cidade Estado CEP linha em branco linha em branco linha em branco
Gostei + 0
02/05/2004
Beppe
Claro vc foi, eu acho é q vc naum testou...
Compilou? Deu erro? Naum funcionou?
Gostei + 0
02/05/2004
Aroldo Zanela
Claro vc foi, eu acho é q vc naum testou...
Compilou? Deu erro? Naum funcionou?[/quote:8b8c9eac12]
Beppe,
Ele não testou, pois teria notado o erro na declaração da variável end (endereço): [Error] Unit1.pas(29): Identifier expected but ´END´ found
O único problema no seu código é que ficou muito simples. :lol: :D
Gostei + 0
03/05/2004
E_marcello
Antecipadamente gostaria de agradecer as respostas, em relação ao código de Beppe eu testei só que ao invés de declarar a variável como End eu declarei como ende. Mas depois com a resposta do Aroldo fiz exatamente como está abaixo:
procedure TForm1.Button1Click(Sender: TObject); type TRegistro = Record Nome: String; Endereco: String; Cidade: String; Estado: String; CEP: String; end; var Arquivo: TStringList; Registro: TRegistro; Laco, Linhas, Campos: Integer; begin Arquivo := TStringList.Create; Arquivo.LoadFromFile(´c:\temp\medicos.txt´); Linhas := Arquivo.Count-1; Campos := 0; For Laco := 0 to Linhas do begin if Campos < 7 then begin Case Campos of 0: Registro.Nome := Arquivo.Strings[Laco]; 1: Registro.Endereco := Arquivo.Strings[Laco]; 2: Registro.Cidade := Arquivo.Strings[Laco]; 3: Registro.Estado := Arquivo.Strings[Laco]; 4: Registro.CEP := Arquivo.Strings[Laco]; end; Inc(Campos) end else begin table1.Edit; table1nome.AsString:=registro.Nome; table1ende.AsString:=Registro.Endereco; table1cidade.AsString:=Registro.Cidade; table1estado.AsString:=Registro.Estado; table1estado.AsString:=Registro.CEP; table1.Post; //ShowMessage(Registro.Nome); // Faça algo com o registro Campos := 0; end; end; Arquivo.Free; end;
O resultado de ambos os códigos é que só grava um registro onde no lugar do nome fica a cidade e no endereco o CEP. Sei que estou errando em algum lugar será que vocês poderim ajudar?
Gostei + 0
03/05/2004
Beppe
mas o arquivo-exemplo está irregular, naum tem cidade, tem bairro, etc...
o problema q só grava um registro, é q vc deve adicionar novos registros, seus comandos estão modificando sempre o msm...
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)