ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

Ler arquivos Filelistbox

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
cmelocpv
Aprendiz
Aprendiz


Registrado: Segunda-Feira, 10 de Novembro de 2014
Mensagens: 102

MensagemEnviada: Ter Out 01, 2019 9:00 pm    Assunto: Ler arquivos Filelistbox Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail
johnny-walker
Moderador
Moderador


Registrado: Sábado, 4 de Outubro de 2003
Mensagens: 10445
Localização: Contagem/MG - BRAZIL

MensagemEnviada: Qua Out 02, 2019 7:30 am    Assunto: Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular MSN Messenger
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB