Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Отслеживание измененния дирректории 
:(
    Опции темы
olegarh
Дата 26.8.2011, 18:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Требуется отслеживать изменение файлов в дирректории

нашел здесь пример

Код

#using <System.dll>

using namespace System;
using namespace System::IO;
using namespace System::Security::Permissions;

public ref class Watcher
{
private:
   // Define the event handlers.
   static void OnChanged( Object^ /*source*/, FileSystemEventArgs^ e )
   {
      // Specify what is done when a file is changed, created, or deleted.
      Console::WriteLine( "File: {0} {1}", e->FullPath, e->ChangeType );
   }

   static void OnRenamed( Object^ /*source*/, RenamedEventArgs^ e )
   {
      // Specify what is done when a file is renamed.
      Console::WriteLine( "File: {0} renamed to {1}", e->OldFullPath, e->FullPath );
   }

public:
   [PermissionSet(SecurityAction::Demand, Name="FullTrust")]
   int static run()
   {
      array<String^>^args = System::Environment::GetCommandLineArgs();

      // If a directory is not specified, exit program.
      if ( args->Length != 2 )
      {
         // Display the proper way to call the program.
         Console::WriteLine( "Usage: Watcher.exe (directory)" );
         return 0;
      }

      // Create a new FileSystemWatcher and set its properties.
      FileSystemWatcher^ watcher = gcnew FileSystemWatcher;
      watcher->Path = args[ 1 ];

      /* Watch for changes in LastAccess and LastWrite times, and 
          the renaming of files or directories. */
      watcher->NotifyFilter = static_cast<NotifyFilters>(NotifyFilters::LastAccess |
            NotifyFilters::LastWrite | NotifyFilters::FileName | NotifyFilters::DirectoryName);

      // Only watch text files.
      watcher->Filter = "*.txt";

      // Add event handlers.
      watcher->Changed += gcnew FileSystemEventHandler( Watcher::OnChanged );
      watcher->Created += gcnew FileSystemEventHandler( Watcher::OnChanged );
      watcher->Deleted += gcnew FileSystemEventHandler( Watcher::OnChanged );
      watcher->Renamed += gcnew RenamedEventHandler( Watcher::OnRenamed );

      // Begin watching.
      watcher->EnableRaisingEvents = true;

      // Wait for the user to quit the program.
      Console::WriteLine( "Press \'q\' to quit the sample." );
      while ( Console::Read() != 'q' );

      return 0;
   }
};

int main() {
   Watcher::run();
}



Не компилится
ошибка:
Код

fatal error C1190: для управляемого целевого кода требуется параметр /clr


В чем проблема?
Заранее благодарен
PM MAIL   Вверх
azesmcar
Дата 26.8.2011, 18:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

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



Цитата(olegarh @  26.8.2011,  18:15 Найти цитируемый пост)
В чем проблема?

В том, что это НЕ C++.
PM   Вверх
olegarh
Дата 26.8.2011, 18:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



а что же?
PM MAIL   Вверх
azesmcar
Дата 26.8.2011, 19:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

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



Цитата(olegarh @  26.8.2011,  18:54 Найти цитируемый пост)
а что же? 

По ссылке прошел?
PM   Вверх
olegarh
Дата 26.8.2011, 23:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



ага.
Т.е. получается что бы этот код работал в 2008 вижуал студии нужно добавить 
/clr:nostdlib
только куда?

да и вообще нужно ли мне использовать C++/CLI ?

просто я много гуглил и не нашел рабочего кода отслеживания изменений в дирректории.

Добавлено через 5 минут и 25 секунд
с /clr:nostdlib разобрался. нужно просто создать проект clr в студии

осталось 2 вопроса : нужно ли мне использовать C++/CLI ?
если нет то кто поможет с кодом на си++

 smile 
PM MAIL   Вверх
volatile
Дата 27.8.2011, 00:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(olegarh @  26.8.2011,  18:15 Найти цитируемый пост)
Требуется отслеживать изменение файлов в дирректории

Цитата(olegarh @  26.8.2011,  23:42 Найти цитируемый пост)
нужно ли мне использовать C++/CLI ?

если только ради этой задачи, то не нужно.

Цитата(olegarh @  26.8.2011,  23:42 Найти цитируемый пост)
если нет то кто поможет с кодом на си++

В winapi есть:
ReadDirectoryChangesW();

В конечном счете все равно все работает через нее.

PM MAIL   Вверх
olegarh
Дата 27.8.2011, 03:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Спасибо))
нашел такой код
он рабочий

единственное что в не отслеживает изменения в подпапках smile 

жду вашего объективного мнения))

Добавлено через 5 минут и 7 секунд
Точнее она даже виснет

-когда создаешь файл txt
-когда в директории создаешь папку а в ней любой файл


PM MAIL   Вверх
olegarh
Дата 27.8.2011, 04:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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




еще один рабочий код

единственное что он не пишет какое именно было сделано действие
и не показывает имен файлов


... теперь надо как то собрать все в кучу и получить программу, которая будет отслеживать появление файла в директории или подпапках, выводить его имя, а точнее путь (с именем конечно).... smile 
PM MAIL   Вверх
maydjin
Дата 28.8.2011, 22:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Есть ещё решение решение в Qt.
Если нужна утилитка, особенно с гуи то должно подойти, особенно если решение должно быть кроссплатформенным.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

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


 




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


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

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