Ler varios arquivos ini só pela extensão

08/01/2020

8

O problema é o seguinte eu quero ler vários arquivos ini, como faço para fazer isso sem ter o nome definido do arquivo?
Responder

Post mais votado

09/01/2020

Bom dia!

Prospect, sempre estou ligado no fórum, aprendi muito tentando resolver algumas dúvidas bem interessantes e só me foi somando
conhecimento.

Uma boa dica é formular bem as perguntas do que você precisa, terá mais resultados e exemplos.

Forte abraço.
Responder

Mais Posts

08/01/2020

P2

Use o filelistbox e filtre pela extensão
Depois realize um for no filelistbox lendo os arquivos listados
Responder

08/01/2020

Prospect

Use o filelistbox e filtre pela extensão
Depois realize um for no filelistbox lendo os arquivos listados


P2.. Rapaz, sempre vejo vc por aqui. Será que poderia dar umas dicas de como aprendeu tanto sobre Delphi? hahaha

Abraço!
Responder

09/01/2020

Rafael Martins

Use o filelistbox e filtre pela extensão
Depois realize um for no filelistbox lendo os arquivos listados


Muito obrigado me ajudou muito.

Só tenho uma outra dúvida referente a isso: no interior dos .ini sempre terá um campo assim 'Nome=qualquer texto' mas tem alguns arquivos que não possuem em seu interior, você sabe algum comando para não trazer esses arquivos?

Agradeço!
Responder

09/01/2020

P2

Seguindo a linha de raciocínio, fiz um exemplo
procedure TForm1.Btn_Ler_ConfsClick(Sender: TObject);
var
  I: Integer;
begin
//Limpeza
FileListBox1.clear; 
Memo1.Lines.Clear;

//Listagem os CONF.ini no Filelistbox
FileListBox1.Directory:=ExtractFilePath(Application.ExeName);
FileListBox1.Update;


//Verifica se foi encontrado algum arquivo no Filelistbox
// Deixei o filtro *.ini

if FileListBox1.Items.Count=0 then
begin
ShowMessage('Nenhum INI encontrado');
end
else
begin
   // Realizo o FOR e leio cada arquivo
   for I := 0 to FileListBox1.Items.Count-1 do
   BEGIN
   FileListBox1.ItemIndex:=I;
   Sleep(100);
   Application.ProcessMessages;

   LerINI(FileListBox1.FileName,'CNX_BD','NOME'); //Função qual ler o arquivo e realiza o procedimento desejado
   end;


function TForm1.LerINI(Caminho_Arquivo,ID_Chave, Campo_Chave_INI: string): string;
var Arq:Tinifile;
begin
    if NOT FileExists(Caminho_Arquivo) then
    BEGIN
    ShowMessage('Arquivo de conexão, não localizado');
    EXIT;
  END;

  Try
       Arq := Tinifile.Create(Caminho_Arquivo);

       If Arq.ReadString(ID_Chave, Campo_Chave_INI, '') = '' THEN
       begin
       Result:='';
       end
       Else
       begin
       Result:=Arq.ReadString(ID_Chave, Campo_Chave_INI, '');
       Tratamento_('Coletado do ARQ ['+FileListBox1.FileName+'] O nome:'+Result );// Aqui é apenas uma fução opcional

      End;
  Except
    on E: Exception do
    begin
      ShowMessage('Erro: ' + E.Message);
      Close;
    End;
    End;
End;


end;




end;

function TForm1.Tratamento_(Valor: String): String;
begin
Memo1.Lines.Add(Valor);
end;


Arquivos INI >> https://ibb.co/d5jc7Zf
Resultado da Rotina >> https://ibb.co/NypZJBs

Nesta rotina possuo 7 arquivos ini, dos 7, 2 não possui a chave nome, simplesmente a rotina ignora esse arquivo e segue o for..

Espero que te der uma luz para resolver sua dúvida


Responder

10/01/2020

Rafael Martins

P2, Bom dia!

Me ajudou muito consegui fazer o que queria muito obrigado!

Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários. Para saber mais sobre o uso de cookies,
consulte nossa política de privacidade. Ao continuar navegando em nosso site, você concorda com a nossa política.

Aceitar