Fórum Ordenar arquivo por data de criação #409151

07/11/2011

0

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

Responder

Posts

09/11/2011

Joel Rodrigues

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.
Responder

Gostei + 0

22/11/2011

Sérgio Andrade.

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;
Responder

Gostei + 0

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

Aceitar