Array
(
)

Comparação entre arquivos e registros

Rafaaugusto
   - 08 mar 2006

Pessoal,

Tenho um diretório com vários arquivos, e uma tabela com a relação desses arquivos. Porém, nem todos os arquivos estão cadastrados na tabela.

Eu preciso listar o nome de todos os arquivos do diretório que não estão cadastrados na tabela.

Alguém???

Valeu,

Rafael


Antseralves
   - 09 mar 2006

No exemplo abaixo temos um método ´ListaNomeArquivos´ em uma
tabela referenciada por um TTable onde existe um campo
chamado ´Nome´ que contem os nomes dos arquivos.

Em um TMemo serão listados os nomes dos arquivos que estão em
uma pasta cujo nome deverá ser passado no parâmetro ´Pasta´.

procedure TForm1.ListaNomeArquivos(Pasta : string);

var Sr : TSearchRec;
Res : integer;

begin
Memo1.Clear;
Table1.Open;
Res := FindFirst(Pasta+´\*.*´,faAnyFile-faDirectory,Sr); // Qualquer
// arquivo exceto nomes de Pastas

while Res = 0 do
begin
if not (Table1.Locate(´Nome´,Sr.Name,[])) then
Memo1.Lines.Add(Sr.Name);
Res := FindNext(Sr);
end;
FindClose(Sr);
Table1.Close;
end;

Por exemplo, no click do botão vc poderá chamar o método
ListaNomeArquivos da seguinte forma:

procedure TForm1.Button1Click(Sender: TObject);

var Pasta : string;

begin
Pasta := ´C:\temp´;
ListaNomeArquivos(Pasta);
end;


Espero ter ajudado.


Rafaaugusto
   - 09 mar 2006

Valeu antseralves...

Só uma coisa: Ele não sai do loop, a variável ´Res´ fica sempre ´0´. Como parar?

Rafael


Antseralves
   - 09 mar 2006

Aqui funcionou legal. Verifique se não cometeu algum erro na transcrição,
por exemplo, se o comando ´ Res := FindNext(Sr); ´ não ficou fora do
loop while...!.