Модераторы: feodorv, GremlinProg, xvr, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> прогресс выполнения процедуры в DLL 
V
    Опции темы
W03L
Дата 21.6.2009, 13:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 8.2.2007

Репутация: нет
Всего: нет



Привет.
Товарищи программисты, поскажите как можно сделать "отлов" прогресса выполнения процедуры в DLL.
Функция поиска файлов:
Код

char tmp[MAX_PATH];
HANDLE file;
DWORD bw;
DWORD count;

__declspec(dllexport) void findFiles(LPSTR path, bool first)
{
  if (first)
    count = 0;
  WIN32_FIND_DATA wfd;
  HANDLE h;
  char tmp2[MAX_PATH];
  ZeroMemory(tmp, MAX_PATH);
  lstrcat(tmp, path);
  lstrcat(tmp, "*.*");
  h = FindFirstFile(tmp, &wfd);
  if (h == INVALID_HANDLE_VALUE) return;
  while(FindNextFile(h, &wfd))
  {
    if (!lstrcmpi(wfd.cFileName, ".")||!lstrcmpi(wfd.cFileName, "..")) continue;
    count =count + 1;

    if (wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
    {
      ZeroMemory(tmp2, MAX_PATH);
      lstrcat(tmp2, path);
      lstrcat(tmp2, wfd.cFileName);
      lstrcat(tmp2, "\\");
      WriteFile(file, tmp2, lstrlen(tmp2), &bw, NULL);    
      WriteFile(file, "\r\n", 2, &bw, NULL);
      findFiles(tmp2, false);
    }else
    {
      ZeroMemory(tmp2, MAX_PATH);
      lstrcat(tmp2, path);
      lstrcat(tmp2, wfd.cFileName);
      WriteFile(file, tmp2, lstrlen(tmp2), &bw, NULL);    
      WriteFile(file, "\r\n", 2, &bw, NULL);
    }
  }
  FindClose(h);
}

как здесь мне выловить переменную count после её изменения. Может другой способ есть?
PM MAIL   Вверх
GoldFinch
Дата 21.6.2009, 13:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: 2
Всего: 26



__declspec(dllexport) DWORD count;
PM MAIL ICQ   Вверх
W03L
Дата 21.6.2009, 13:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 8.2.2007

Репутация: нет
Всего: нет



Цитата(GoldFinch @ 21.6.2009,  13:36)
__declspec(dllexport) DWORD count;

если так, то эта переменная возвращается со значением только после всех операций процедуры (одно число).
Нужно после каждого изменения получить её.
PM MAIL   Вверх
GremlinProg
Дата 21.6.2009, 14:18 (ссылка) |  (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2706
Регистрация: 9.8.2005
Где: Тюмень

Репутация: 99
Всего: 106



Цитата(W03L @  21.6.2009,  15:56 Найти цитируемый пост)
Нужно после каждого изменения получить её.

значит нужно вызвать этот метод в отдельном потоке, либо вызвать обработку count в отдельном потоке,
вобщем - нужно разделить во времени эти два метода

либо по простому, без наворотов с потоками: передать в findFiles указатель на внешний callback,
который и вызывать на каждой итерации (для консольки такой вариант пойдет, а вот для окон - смотри все же в сторону потоков)


--------------------
"Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины."
PM WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.0615 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.