GARANTIR DESCONTO

Fórum Arquivo Textos #354284

24/02/2008

0

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.


Paulo

Paulo

Responder

Posts

24/02/2008

Edilcimar

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


Responder

Gostei + 0

25/02/2008

Paullsoftware

você pode usar uma stringlist para quebra as linhas em colunas e fazer a leitura individualmente...
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;
espero ter ajudado :wink:


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar