Ler varios arquivos ini só pela extensão

08/01/2020

0

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

Rafael Martins

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.

Raimundo Pereira

Raimundo Pereira
Responder

Mais Posts

08/01/2020

Raimundo Pereira

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

08/01/2020

Nomad

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

Raimundo Pereira

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

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

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

Aceitar