Форум: "Основная";
Текущий архив: 2005.11.06;
Скачать: [xml.tar.bz2];
ВнизСканирование папок и файлов в потоке Найти похожие ветки
← →
Sergey_R © (2005-10-19 12:12) [0]Подскажите, пожалуйста, как реализовать добавление файлов из определенной папки (включая вложенные) в потоке. Мне нужно выводить количество уже найденных файлов на какую-нибудь форму. С выводом вроде понятно, как сделать. А вот как засунуть эту функцию в поток?
procedure FindAllFiles(List: TStrings; Dir, Mask: string);
procedure ScanDir(Dir: string);
var SR: TSearchRec;
begin
Dir := IncludeTrailingBackSlash(Dir);
if FindFirst(Dir + "*.*", faAnyFile - faVolumeID, SR) = 0
then
try
repeat
if (SR.Name <> ".") and (SR.Name <> "..") then
if SR.Attr and faDirectory <> 0
then ScanDir(Dir + SR.Name)
else if MatchesMask(SR.Name, Mask) then
begin
List.Add(Dir + SR.Name);
inc(kol);
end;
until FindNext(SR) <> 0;
finally
FindClose(SR);
end;
end;
begin
if (List = nil) or not DirectoryExists(Dir) or (Mask = "") then
raise Exception.Create("Invalid parameter");
ScanDir(Dir)
end;
переменная kol в данном случае объявлена глобально, и именно её мне нужно куда-нибудь вывести. Пробовал создать поток, куда вставил эти процедуры, но Synchronize почему-то доступно только в Thread.Execute!
← →
clickmaker © (2005-10-19 12:29) [1]
> Synchronize почему-то доступно только в Thread.Execute!
она доступна из любого метода потока
← →
Digitman © (2005-10-19 12:36) [2]
> как засунуть эту функцию в поток?
ну как ты обычно "суешь", так и "засунь".
или призадумайся. что и зачем "суешь" ...
← →
Sergey_R © (2005-10-19 13:31) [3]2 clickmaker
Спасибо! Оказалось, что просто надо прописать в классе потока нужную функцию и Synchronize заработал!
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2005.11.06;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.036 c