Leitura de Arquivos em Diretorio
Bom Dia a Todos.
Estou precisando desenvolver um programa para abrir todos as arquivos .INI em um determinado diretorio, e pegar um determinado valor dentro deste .INI, não estou conseguindo colocar o codigo para saber quantos arquivos eu tenho dentro deste diretorio e fazer com que o programa pegue o primeiro, abra-o e leia o conteudo e depois vai fazendo até o ultimo arquivo.
Grato. :cry:
Estou precisando desenvolver um programa para abrir todos as arquivos .INI em um determinado diretorio, e pegar um determinado valor dentro deste .INI, não estou conseguindo colocar o codigo para saber quantos arquivos eu tenho dentro deste diretorio e fazer com que o programa pegue o primeiro, abra-o e leia o conteudo e depois vai fazendo até o ultimo arquivo.
Grato. :cry:
Ericfp
Curtidas 0
Respostas
Jairroberto
06/06/2003
Olá, amigo!
Criei uma rotina para listar arquivos em um objeto TStrings:
Você deve chamar a função da seguinte forma:
Um abraço,
Jair
Criei uma rotina para listar arquivos em um objeto TStrings:
{
Lista os arquivos onde:
Mascara = relação de caminhos e curingas separados por ponto e vírgula.
Ex.: ´C:\Teste\*.txt;C:\Outro\*.dat´
}
function ListarArquivos(const Mascara: string; Lista: TStrings; const IncluirCaminho, IncluirDiretorios, IncluirPontos: Boolean): Integer;
var
i: Integer;
s: string;
procedure ListarArquivosPath(const Mascara: string; Lista: TStrings; const IncluirCaminho, IncluirDiretorios, IncluirPontos: Boolean);
var
DirInfo: TSearchRec;
i: Integer;
begin
i := FindFirst(Mascara, faAnyFile, DirInfo);
while i = 0 do
begin
if (IncluirDiretorios or ((DirInfo.Attr and faDirectory) <> faDirectory))
and (IncluirPontos or ((DirInfo.Name <> ´.´) and (DirInfo.Name <> ´..´)))
and ((DirInfo.Attr and faVolumeID) <> faVolumeID)
then
if IncluirCaminho then
Lista.Add(ExtractFilePath(Mascara) + DirInfo.Name)
else
Lista.Add(DirInfo.Name);
i := FindNext(DirInfo);
end;
SysUtils.FindClose(DirInfo);
end;
begin
Result := Lista.Count;
if Pos(´;´, Mascara) = 0 then
ListarArquivosPath(Mascara, Lista, IncluirCaminho, IncluirDiretorios, IncluirPontos)
else
for i := 1 to Length(Mascara) do
begin
if Mascara[i] <> ´;´ then
s := s + Mascara[i];
if (Mascara[i] = ´;´) or (i = Length(Mascara)) then
begin
ListarArquivosPath(s, Lista, IncluirCaminho, IncluirDiretorios, IncluirPontos);
s := ´´;
end;
end;
Result := Lista.Count - Result;
end;
Você deve chamar a função da seguinte forma:
procedure TForm1.Button1Click(Sender: TObject); var sl: TStringList; i: Integer; begin sl := TStringList.Create; try if ListarArquivos(´C:\Windows\*.ini´, sl, True) > 0 then for i := 0 to Pred(sl.Count) do begin // Processa cada arquivo encontrado end; finally sl.Free; end; end;
Um abraço,
Jair
GOSTEI 0
Ericfp
06/06/2003
Obrigado Jair. :lol:
Não sei o que está errado, mas esta apresentando a seguinte mensagem quando compilado
NO ENOUGH ACTUAL PARAMETERS.
poderia me ajudar mais uma vez.
Grato.
Não sei o que está errado, mas esta apresentando a seguinte mensagem quando compilado
NO ENOUGH ACTUAL PARAMETERS.
poderia me ajudar mais uma vez.
Grato.
GOSTEI 0
Ericfp
06/06/2003
Outra coisa.
Não estou conseguindo pegar o nome do arquivo que esta sendo lido no FOR DO.
Grato.
:o
Não estou conseguindo pegar o nome do arquivo que esta sendo lido no FOR DO.
Grato.
:o
GOSTEI 0
Ericfp
06/06/2003
Obrigado.
A todas as 15 pessoas que pelo menos leram a minha solicitação; obrigado principalmente ao Sr. Jair, por ter enviado a resposta com tanta urgencia.
Consegui resolver as minhas outras perguntas, e importar os dados a qual necessitava.
Obrigado a Todos.
´Que essa comunidade Delphi nunca tenha um fim, e sim sempre um começo´
8)
A todas as 15 pessoas que pelo menos leram a minha solicitação; obrigado principalmente ao Sr. Jair, por ter enviado a resposta com tanta urgencia.
Consegui resolver as minhas outras perguntas, e importar os dados a qual necessitava.
Obrigado a Todos.
´Que essa comunidade Delphi nunca tenha um fim, e sim sempre um começo´
8)
GOSTEI 0
Jairroberto
06/06/2003
Olá, amigo!
Na pressa esqueci de informar a declaração [b:28b4c2d63d]interface[/b:28b4c2d63d] da função, que declara parâmetros condicionais, com valores default:
Aqui vai um exemplo de como pegar os nomes dos arquivos no loop:
Um abraço,
Jair
Na pressa esqueci de informar a declaração [b:28b4c2d63d]interface[/b:28b4c2d63d] da função, que declara parâmetros condicionais, com valores default:
function ListarArquivos(const Mascara: string; Lista: TStrings; const IncluirCaminho: Boolean = False; const IncluirDiretorios: Boolean = False; const IncluirPontos: Boolean = False): Integer;
Aqui vai um exemplo de como pegar os nomes dos arquivos no loop:
sl := TStringList.Create; try if ListarArquivos(´C:\Windows\*.ini´, sl, True) > 0 then for i := 0 to Pred(sl.Count) do begin ShowMessage(sl[i]); end; finally sl.Free; end;
Um abraço,
Jair
GOSTEI 0
Ericfp
06/06/2003
Ola.
O comando que vc me enviou para pegar o mone dos arquivos esta trazendo o caminho completo, e o que eu quero e somente o nome do arquivo + a extensão (teste.txt).
Fico no Aguardo.
:lol:
O comando que vc me enviou para pegar o mone dos arquivos esta trazendo o caminho completo, e o que eu quero e somente o nome do arquivo + a extensão (teste.txt).
Fico no Aguardo.
:lol:
GOSTEI 0