 |
ActiveDelphi .: O site do programador Delphi! :.
|
Exibir mensagem anterior :: Exibir próxima mensagem |
Autor |
Mensagem |
cmelocpv Aprendiz

Registrado: Segunda-Feira, 10 de Novembro de 2014 Mensagens: 129
|
Enviada: Ter Out 01, 2019 9:00 pm Assunto: Ler arquivos Filelistbox |
|
|
Boa noite, pessoal estou precisando de uma ajuda para ler arquivos de uma determinada pasta, onde joquei dentro de um filelistbox, so que a ordem dos arquivos esta sendo lida de forma errada ex:
prd011000315.txt
prd011000316.txt
prd300900213.txt
prd300900250.txt
onde preciso ler o ultimo arquivo como prd011000316.txt e ele pega o ultimo como prd300900250.txt, seria arquivos por data do dia..
Como posso fazer isso.
obrigado |
|
Voltar ao Topo |
|
 |
johnny-walker Moderador


Registrado: Sábado, 4 de Outubro de 2003 Mensagens: 10653 Localização: Contagem/MG - BRAZIL
|
Enviada: Qua Out 02, 2019 7:30 am Assunto: |
|
|
Se você chamar BeginUpdate and EndUpdate, a lista não será modificada até estar pronta, isso será ainda mais ráido e você pode ordenar os arquivos por data com este código, pois filelistbox é sempre ordenado por ordem alfabética.
Código: | FileListBox1.Item.BeginUpdate;
try
//do your loop here
finally
FileListBox1.Item.EndUpdate;
end;
But my recommendation is to save the list to a temporary list then work from that eg
var
TempList: TStringList;
begin
TempList := TStringList.Create;
try
TempList.Assign(FileListBox.Items);
FileListBox1.Item.BeginUpdate;
try
//here do your loop accessing the TempList
while filenumber < TempList.Count do
begin
FileName := TempList.Items.Strings[filenumber];
//your rename code
Inc(filenumber);
end;
finally
//refresh the list box then endupdate
FileListBox1.Item.EndUpdate;
end;
finally
FreeAndNil(TempList);
end;
end; |
Outra coisa que você pode fazer é adicionar um ShellChangeNotifier código abaixo no evento onfilechange:
Código: | procedure TForm1.ShellChangeNotifier1Change;
begin
FileListBox1.Update;
end;
|
Este outro código percorre a lista e adiciona o tamanho dos arquivos e você pode listar também a data, para isto basta modificar o código:
Código: | procedure TForm1.Button1Click(Sender: TObject);
var
F: File;
i, filehandle: Integer;
begin
for i := 0 to (FileListBox1.Items.Count - 1) do begin
try
if FileListBox1.Selected[i] then
begin
if not FileExists(FileListBox1.Items.Strings[i]) then
begin
MessageDlg('File: ' + FileListBox1.Items.Strings[i] +
' not found', mtError, [mbOk], 0);
Continue;
end;
filehandle:= FileOpen(FileListBox1.Items.Strings[i], fmOpenWrite);
if (filehandle = -1) then
begin
MessageDlg('File: ' + FileListBox1.Items.Strings[i] +
' cannot be opened with access mode fmOpenWrite.', mtError, [mbOk], 0);
Continue;
end
else
FileClose(filehandle);
AssignFile(F, FileListBox1.Items.Strings[i]);
Reset(F, 1);
ListBox1.Items.Add(
FileListBox1.Items.Strings[i] + ': ' + IntToStr(FileSize(F)));
CloseFile(F);
end;
finally
{ Do something here. }
end;
end;
end; |
bye _________________ P.O.W.E.R B.Y D.E.L.P.H.I |
|
Voltar ao Topo |
|
 |
|
|
Enviar Mensagens Novas: Proibido. Responder Tópicos Proibido Editar Mensagens: Proibido. Excluir Mensagens: Proibido. Votar em Enquetes: Proibido.
|
|