Monitorar arquivos gravados em Diretório
11/02/2006
0
Saber se foi acrescentado algum arquivo no diretório, e pela data_hora mais antiga pegar o nome deste arquivo e gravar na base como o path para vincular a um atendimento.
A pergunta como fazer isto, qual compnente poderia usar.
Emery
Emery
Posts
11/02/2006
Aroldo Zanela
Depende da versão do Delphi. Verifique na paleta de componentes Samples se tem um componente denominado ShellChangeNotifier. Se não tiver, informe que te passo o código para implementar isso.
11/02/2006
Emery
Emery
11/02/2006
Aroldo Zanela
Configure a propriedade NotifyFilters e no manipulador de eventos ´OnChange´ você deverá implementar uma rotina para controlar isso. Infelizmente não tenho nada pronto aqui para complementar este tópico.
11/02/2006
Edilcimar
11/02/2006
Aroldo Zanela
Para obter a lista dos arquivos desejados de uma determinada pasta:
function ListFiles(const Dir, Wildcard: string; const List: TStrings): Boolean; var FileSpec: string; SR: TSearchRec; Success: Integer; begin Assert(Assigned(List)); Result := DirectoryExists(Dir); if not Result then Exit; FileSpec := Dir+´\´; if Wildcard = ´´ then FileSpec := FileSpec + ´*.*´ else FileSpec := FileSpec + Wildcard; Success := FindFirst(FileSpec, faAnyFile, SR); try while Success = 0 do begin if (SR.Name <> ´.´) and (SR.Name <> ´..´) and (SR.Attr and faVolumeId = 0) then List.Add(Dir+´\´+ SR.Name); Success := FindNext(SR); end; finally FindClose(SR); end; end;
Para pegar o arquivo mais novo:
var List: TStringList; I, N: Integer; MostRecentFile: string; MostRecentDate: TDateTime; begin List := TStringList.Create; if ListFiles(´C:\TEMP´,´*.*´,List ) then begin N := List.Count-1; for I := 0 to N do begin if FileDateToDateTime(FileAge(List.Strings[I]))>MostRecentDate then begin MostRecentDate := FileDateToDateTime(FileAge(List.Strings[I])); MostRecentFile:= List.Strings[I]; end; end; ShowMessage(MostRecentFile); end; end;
Deve ter um jeito mais fácil, mas fiz da forma que me lembrei no momento.
06/03/2006
Macario
Como faço para o ShellChangeNotifier notificar em tempo real?
Ele so me mostra a mensagem se eu voltar a aplicação de exemplo que criei.
Estou querendo criar uma serviço que ao identificar qualquer alteração em um determinado diretorio, ele peça ao usuário para enviiar um email.
A parte do email eu sei fazer ja pra por isso em serviço é que estou me perdendo.
Qualquer indicação ou exemplo é de grande ajuda.
Um abraço. 8) :arrow:
Clique aqui para fazer login e interagir na Comunidade :)