Fórum ler nomer de arquivos num diretorio e deletar aqueles conf. critério #414888
31/03/2012
0
var
b: string;
a: string;
d,c: string;
SR: TSearchRec;
I,E: integer;
F: Double;
g: Int64;
begin
a := caminho;//constante declarada
d := (FormatFloat(#####.000, (now)));
b := d + .ini;
I := FindFirst(caminho+*.ini, faAnyFile, SR);
while I = 0 do begin
begin
E:=pos(.ini,(SR.Name));
g:=Trunc(Now);
F:=g-50;
if E<F then
begin
DeleteFile(caminho+ SR.Name) ;
end;
I := FindNext(SR);
end;
end;
Marcio Teles
Curtir tópico
+ 0Posts
31/03/2012
Bruno Leandro
Gostei + 0
31/03/2012
Marcio Teles
Gostei + 0
01/04/2012
Sérgio Saibel
Vc não poderia comparar com equals, uma vez que vc tem o nome do arquivo e o padrão de exclusão sendo strings??
Espero ter ajudado.
Gostei + 0
01/04/2012
Bruno Leandro
var
b: string;
SR: TSearchRec;
I: integer;
F,E: Double;
g: Int64;
begin
I := FindFirst(caminho+*.ini, faAnyFile, SR);
F := 48522.2;
while I = 0 do begin
begin
E := StrToFloatDef(Copy(SR.Name,length(SR.Name)-11,8),99999.99);
if E < F then
begin
DeleteFile(caminho + SR.Name);
end;
I := FindNext(SR);
end;
end;
end;
Gostei + 0
01/04/2012
Marcio Teles
Gostei + 0
01/04/2012
Marcio Teles
Gostei + 0
01/04/2012
Marcio Teles
var
b: string;
SR: TSearchRec;
I: integer;
F,E: Double;
g: Int64;
begin
I := FindFirst(caminho+*.ini, faAnyFile, SR);
F := 48522.2;
while I = 0 do begin
begin
E := StrToFloatDef(Copy(SR.Name,length(SR.Name)-11,8),****NOME DO ARQUIVO*****);
if E < F then
begin
DeleteFile(caminho + SR.Name);
end;
I := FindNext(SR);
end;
end;
end;
Gostei + 0
01/04/2012
Bruno Leandro
esta copiando os 8 ultimos caracteres do nome exceto a extensão ou seja
o arquivo com o nome xxxx_12345.67.ini irá copiar 12345.67, caso não esteja neste tipo de formato
ele irá definir o valor 99999.99 para que esse arquivo não sejá excluido, caso esteja no formato informado
irá realizar a comparação com o parametro informado.
Gostei + 0
01/04/2012
Marcio Teles
if E < F then // se o nome do arquivo ( já convertido em Float ) for menor que um outro Float (E)
begin
DeleteFile(caminho + SR.Name);//deletar o arquivo com o nome F e somente ele
end;
Gostei + 0
02/04/2012
Sérgio Saibel
Da uma olhada neste link, pode ser util
http://www.delphibasics.co.uk/Method.asp?NameSpace=System&Class=String&Type=Class&Method=Compare
Espero ter ajudado.
Gostei + 0
02/04/2012
Sérgio Saibel
Vc não poderia comparar com equals, uma vez que vc tem o nome do arquivo e o padrão de exclusão sendo strings??
Espero ter ajudado.
Desculpe equals não se aplica ao delphi.
Gostei + 0
02/04/2012
Marco Salles
partir da versão delphi 2010 a uses IOUtils; tem classes
especificas para esta finalidade
Código:
var
path:string;
begin
if not TDirectory.Exists(D:\envio) then
raise Exception.Create(Invalid Path);
for path in TDirectory.GetFiles(D:\envio\,*.xml,
TSearchOption.soTopDirectoryOnly) do
showmessage(TPath.GetFileName(path));
Perceba temos ainda a opção de
de filtrar os resultados retornados .. Por exemplo Arquivos com
tamanho de tantos Kb , ou com data de criação a partir de , ou modificados , com determinado Nome especifico etc...
Por exemplo
Código:
var
path:string;
Filtro : TDirectory.TFilterPredicate;
begin
if not TDirectory.Exists(D:\envio) then
raise Exception.Create(Invalid Path);
Filtro := function(const Path: string; const SearchRec: TSearchRec): Boolean
begin
Result := (TDirectory.GetCreationTime(Path) < date - 10)
end;
for path in TDirectory.GetFiles(D:\envio,*.xml,
TSearchOption.soTopDirectoryOnly,filtro) do
showmessage(TPath.GetFileName(path));
end;
Voce filtra os resultados somente os arquivos com data de criação dos
últimos dez dias . enfim uma série de possibilidades
Tópico Original
http://www.activedelphi.com.br/forum/viewtopic.php?t=71008&highlight=tdirectory&sid=31c9e57b0818e35c496a65a557322895
Gostei + 0
03/04/2012
Sérgio Saibel
Gostei + 0
03/04/2012
Marcio Teles
Gostei + 0
03/04/2012
Marcio Teles
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)