Arquivo Textos
Preciso preencher uma tabelinha(Não é tabela de banco de dados), de um arquivo texto. Acontece que a tabela tem duas colunas e na primeira os quatros primeiros caracteres e na segunda o restante apartir da string ´ - ´. Então eu dou um copy na primeira assim:
var1 := Copy(String, 1, 4); e na segunda fiz assim:
var2 := Copy(String, Pos(´ - ´, String)+1, Length(string));
Agora quando eu dou um while no arquivo texto, ele não entra no while, assim:
while not eof(arq) do
begin
Comandos
end;
Antes do while eu dou Reset(arq);
Qualquer ajuda é bem-vinda.
var1 := Copy(String, 1, 4); e na segunda fiz assim:
var2 := Copy(String, Pos(´ - ´, String)+1, Length(string));
Agora quando eu dou um while no arquivo texto, ele não entra no while, assim:
while not eof(arq) do
begin
Comandos
end;
Antes do while eu dou Reset(arq);
Qualquer ajuda é bem-vinda.
Paulo
Curtidas 0
Respostas
Edilcimar
24/02/2008
assignfile(arq,caminhodoarquivo);
reset(arq);
while not eof(arq) do
begin
readln(arq, variavel);
var1:=copy(variavel,1,4);
var2:=copy(variavel,6,length(variavel));
end
reset(arq);
while not eof(arq) do
begin
readln(arq, variavel);
var1:=copy(variavel,1,4);
var2:=copy(variavel,6,length(variavel));
end
GOSTEI 0
Paullsoftware
24/02/2008
você pode usar uma stringlist para quebra as linhas em colunas e fazer a leitura individualmente...espero ter ajudado :wink:
var Registros: TStringList; ListaCampos: TStringList; j: Integer ; ArquivoTexto:String; Const Enter_ = #13 + 10; begin Try Registros := TStringList.Create; ListaCampos := TStringList.Create; Registros.LoadFromFile(ArquivoTexto); for j := 0 to Registros.Count -1 do begin //Quebra o arquivo com base no caractere separador ListaCampos.Text := StringReplace(Registros[j], ´-´, Enter_, [rfReplaceAll, rfIgnoreCase]); if ListaCampos[0] <> ´´ then with ACds do begin Close; CommandText:=´ select Campo1, Campo2 from tabela where Campo1=:Campo1´; Params[0].AsString := ListaCampos[0]; Open; if IsEmpty then begin Insert; Fields[0].Value := StrToInt(ListaCampos[0]); Fields[1].Value := ListaCampos[1]; Post; end; Application.ProcessMessages; end; end; finally Registros.Free; ListaCampos.Free; end; end;
GOSTEI 0