Код: Выделить всё
function GetCount(dir:String):Integer;
var
// Объект поиска
F:TSearchRec;
// Счетчик найденых файлов
I:Integer;
begin
// Сбрасываем на 0 перед началом
i:=0;
// Возвращаем результат функции 0
GetCount:=i;
// Ищем файл в указанной папке по заданому расширению
if FindFirst(dir+'*.*',faAnyfile,F)=0 then
repeat
// Если файл не равен каталогу и подкаталогу то
if (F.Name<>'.') and (F.Name<>'..') then
begin
// Начисляем счетчик
inc(I);
end;
// До тех пор пока в папке не останется неодного файла
until FindNext(F)<>0;
// Закрываем объект поиска
FindClose(F);
// Возвращаем результат функции
GetCount:=I;
end;
Все отличе в том что *.* в этом то и соль что функция findfirst найдет "." и ".." и скажет что файл в папке есть так как это тоже файлы

а вот сюрприз цыкл для мониторинга за папкой
...
Код: Выделить всё
Writeln(' im looking in /home/alex/temp/ '); // Печатаем строку
Writeln(' is empty...'); .. и еще печатаем строку
repeat
sleep(1); // говорим процессору спать чтоб он больно сильно не трефожился и не грузился
// во время ожидания
i:=GetCount('/home/alex/temp/'); // i будет принимать значение функции каждый момент времени
until i >0; // Как только i станет больше 0 то выходим из цыкла
WriteLn('ok! '+inttostr(i)+' file found in dir!'); // Поздровляем с найденым файлом

В моент появления в папке файла процесс оборвется и выведет сообщение
ну а чтоб не обрывался и постоянно показывал сколько файлов в папке сделайте так
Код: Выделить всё
var
i:integer;
stop:boolean=false;
gx,gy:byte;
Writeln(' im looking in /home/alex/temp/ '); // Печатаем строку
Writeln(' is empty...'); .. и еще печатаем строку
repeat
sleep(1); // говорим процессору спать чтоб он больно сильно не трефожился и не грузился
// во время ожидания
i:=GetCount('/home/alex/temp/'); // i будет принимать значение функции каждый момент времени
gx:=whereX;
gy:=whereY;
WriteLn('ok! '+inttostr(i)+' file found in dir!'); // Поздровляем с найденым файлом
gotoxy(gx,gy);
until stop; // Как только stop станет истиной то выходим из цыкла