Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Архив форумов ЦИТФорума
Море(!) вопросов - Море(!) ответов
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 
Как правильно задавать вопросы

FindFirst

 
Перейти:  
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование
Предыдущая тема :: Следующая тема  
Автор Сообщение
qwerty1
Гость





СообщениеДобавлено: Вт Апр 13 2004 10:48    Заголовок сообщения: FindFirst Ответить с цитатой

У меня в программе необходимо выполнять поиск файлов.
При использовании FinFirst и т.д. функций прога (если поиск долгий) полностью "виснет", не отрисовывается и т.д. Можете что-нибудь посоветовать как лучше всего производить поиск на жесткои диске?
Программа на Дельфи (или Билдере, что одинаково).
Вернуться к началу
JibSkeart



Зарегистрирован: 13.04.2004
Сообщения: 12
Откуда: Из далекой галактики

СообщениеДобавлено: Вт Апр 13 2004 16:37    Заголовок сообщения: Re: FindFirst Ответить с цитатой

выполнить процедуру в новом процессе/нити
есть примеры в exemples

ну а я могу вам предложить только
свой вариант на BCB++


class TFindFile : public TThread
{
private:
AnsiString FFindFile;
public:
__fastcall TFindFile(AnsiString FileName):TThread(true)
{
FFileName = FileName;
}

void __fastcall FindFiles()
{
// сдесь ищем файл название его допустим в переменной FFileName
};
virtual void __fastcall Execute(void)
{
try
{
Synchronize(FindFiles);
}
catch(Exception &e)
{
ShowMessage("Ошибка "+ e.Message);
}
}
};

Юзаем

TFindFile * FFiles new = TFindFile("test.txt");
все, как обьект FFiles создался метод Execute автоматически выролняется,
за дополнениеми читайте хелп, смотрие примеры.
_________________
-=JS=-
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
SilverBlood
Гость





СообщениеДобавлено: Вт Апр 13 2004 21:10    Заголовок сообщения: Ответить с цитатой

для поиска файлов в директории dir по маске mask:

procedure SearchInDir(Mask, Dir: string; Subdir: Boolean; list: tstrings);
var
r: integer;
f: TSearchRec;
begin
if Dir = '' then Exit;
if Dir[Length(Dir)] <> '\' then Dir := Dir + '\';
{$I-}
ChDir(Dir);
{$I+}
if IOResult <> 0 then Exit;
r := FindFirst('*.*', faAnyFile, f);
while r = 0 do
begin
if MatchesMask(f.Name, Mask) then
if (f.Name <> '.') and (f.Name <> '..') then
list.add(ExpandFileName(f.Name));
if (f.Attr and faDirectory) = faDirectory then
if SubDir = True then
begin
if (f.Name <> '.') and (f.Name <> '..') then
begin
SearchInDir(Mask, ExpandFileName(f.Name), SubDir; list );
ChDir(Dir);
end;
end;
r := FindNext(f);
end;
FindClose(f);
end;
Вернуться к началу
GREA



Зарегистрирован: 14.05.2003
Сообщения: 758
Откуда: Новосибирск

СообщениеДобавлено: Пт Апр 16 2004 19:59    Заголовок сообщения: Ответить с цитатой

Возможно, поможет application.processmessages, вставленная внутрь цикла.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2002 phpBB Group
Русская поддержка phpBB

 

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 6608306, ICQ 232284597
Пресс-релизы — pr@citforum.ru
Послать комментарий
Информация для авторов
This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2006 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...