Ordenar arquivo por data de criação

Delphi

07/11/2011

Preciso criar um programa que cria um sequencial no nome do arquivo. acontece que o sequencial deverá ser feito pela datade modificação do arquivo, logo, como são arquivos soltos em uma pasta, caso alguém tenha ordenado por tipo, por exemplo, preciso antes ordenar dentro da pasta por data de modificação, do mais antigo para o mais novo. Como eu faço isso?
Pjava

Pjava

Curtidas 0

Respostas

Joel Rodrigues

Joel Rodrigues

07/11/2011

Uma ideia seria ler todos os arquivos da pasta, armazenar a informação em um vetor, ordenar esse vetor pela data que vocÊ quer e então executar sua rotina. Dessa forma, você não precisaria ordenar os arquivos na pasta.
GOSTEI 0
Sérgio Andrade.

Sérgio Andrade.

07/11/2011

Aconselho você utilizar a função abaixo para listar todos os arquivos de uma determinada pasta e listá-la em um listview, porque assim você pode ordenar em tempo de execução.

Para listar os arquivos:

function ListaArquivos(path, Extensao: String): TStringList;
var
sr: TSearchRec;
FileAttrs: Integer;
Na,nm :String;
Lst :TStringList;

begin
Lst :=TStringList.Create;
FileAttrs := faAnyFile;
if FindFirst(path+\*.*, FileAttrs, sr) = 0 then
begin
repeat
nm :=sr.Name;
Na :=copy(sr.Name,length(sr.Name)-2,length(sr.Name));
if Na=Extensao then
begin
Lst.Add(nm);
end;
until FindNext(sr) <> 0;
FindClose(sr);
end;
Result :=Lst;
end;

Para ordenar:

Ordenação De Colunas de um ListView Delphi (TListView)


É possível estarmos ordenando (crescente ou decrescente) os dados de uma determinada coluna de um ListView apenas clicando sobre o titulo da mesma. Para isso é necessário implementar os seguintes códigos conforme abaixo.

//Declaração e atribuição de variáveis globais
var
IndiceColuna: Integer = 0;
OrdenarAsc : boolean = True;

//No evento onColumnClick da ListView
procedure Tform1.LisViewColumnClick(Sender: TObject;
Column: TListColumn);
begin
if IndiceColuna = Column.Index then
begin
//Se a coluna clicada for a mesma que ja esta muda a ordenacao
OrdenarAsc := not(OrdenarAsc);
LisView.AlphaSort;
end else
begin
//Se a coluna diferente da clicada anteriormente
OrdenarAsc := true;
IndiceColuna:= Column.Index;
LisView.AlphaSort;
end;
end;

//No evento onCompare da ListView
procedure Tform1.LisViewCompare(Sender: TObject; Item1,
Item2: TListItem; Data: Integer; var Compare: Integer);
begin
If IndiceColuna = 0 Then
begin
//Ordena de acordo com o caption da coluna
if OrdenarAsc then
Compare:= CompareText(Item1.Caption, Item2.Caption)
else
Compare:= CompareText(Item2.Caption, Item1.Caption);
end else
begin
//Ordenação dos subitens de acordo com o OrdenarAsc
if OrdenarAsc then
Compare:= CompareText(Item1.SubItems[IndiceColuna-1],
Item2.SubItems[IndiceColuna-1])
else
Compare:= CompareText(Item2.SubItems[IndiceColuna-1],
Item1.SubItems[IndiceColuna-1]);
end;
end;
GOSTEI 0
POSTAR