The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
Visual C++ , !*! pavlinux, 04-Дек-09, 22:48  [смотреть все]
Есть вот такой код, написан на VC++ 8.0

Компиляция выдаёт ошибку - не определен тип DIR
функции opendir(), readdir()
и S_ISDIR

где они там живут???

void restore_db_t::disc_usage(const std::string &path)
{
    DIR *d;
    m_cur_buf = 0;

    // Считаем размер в дирректории    
    d = opendir(path.c_str());
    if (d)
    {
        struct dirent *de;
        while ( (de=readdir(d)) )
        {
            struct stat info;
            int err;
            std::string full_name = path+"/"+de->d_name;
            
            err = stat( full_name.c_str() ,&info);
            if ( (!err)&&(!S_ISDIR(info.st_mode)) )
            {            
                m_cur_buf += info.st_size;
            }
            else
            {
              ;
            }    
        }
        closedir(d);
    }
    if (( m_cur_buf > m_max_buf )&&( m_max_buf!=0 ))
    {
        m_restore_file.PubDelFirstFile();
        disc_usage(path);
    }
}

  • Visual C++ , !*! parad, 01:40 , 05-Дек-09 (1)
    • Visual C++ , !*! pavlinux, 01:49 , 05-Дек-09 (2)
      >man opendir

      Microsoft Windows XP [Версия 5.1.2600]
      (С) Корпорация Майкрософт, 1985-2001.

      C:\Documents and Settings\USER>man opendir
      "man" не является внутренней или внешней
      командой, исполняемой программой или пакетным файлом.

      ------------------

      Мне надо портировать эту хрень, и ещё 50.000 строк в УНИХ,
      а прежде надо увидеть как там всё работает. dirent.h в MFC нету...


      • Visual C++ , !*! GreenHouse, 13:16 , 05-Дек-09 (3)
        >[оверквотинг удален]
        >
        >C:\Documents and Settings\USER>man opendir
        >"man" не является внутренней или внешней
        >командой, исполняемой программой или пакетным файлом.
        >
        >------------------
        >
        >Мне надо портировать эту хрень, и ещё 50.000 строк в УНИХ,
        >а прежде надо увидеть как там всё работает. dirent.h в MFC нету...
        >

        Ну значит юзай MSDN, там есть описание всех виндовскиф функций
        http://msdn.microsoft.com/ru-ru/default.aspx

  • Visual C++ , !*! Vitaly_loki, 15:53 , 05-Дек-09 (4)
    >[оверквотинг удален]
    >   }
    >  }
    >  closedir(d);
    > }
    >    if (( m_cur_buf > m_max_buf )&&( m_max_buf!=0 ))
    > {
    >  m_restore_file.PubDelFirstFile();
    >  disc_usage(path);
    > }
    >}

    Честно говоря, С++ тут не увидел... голый Си только
    ________
    Сорри, std::string не заметил... Предыдущий ответ верный... надо полистать MSDN на сайте мелких и мягких. Там должно быть описание.

    • Visual C++ , !*! pavlinux, 16:10 , 05-Дек-09 (5)
      > надо полистать MSDN на сайте мелких и мягких.
      > Там должно быть описание.

      Нет там ни..уя, ламерюги там одни ...
      И ещё сука, POSIX совместимыми себя зовут ...


      Надо качнуть тут http://www.softagalleria.net/dirent.php
      Либо руками расписать свой


      • Visual C++ , !*! GreenHouse, 16:44 , 05-Дек-09 (6)
        >Нет там ни..уя, ламерюги там одни ...
        >И ещё сука, POSIX совместимыми себя зовут ...
        >
        >
        >Надо качнуть тут http://www.softagalleria.net/dirent.php
        >Либо руками расписать свой

        Windows POSIX-совместимая - это смешно!!!
        Если надо написать приложение которое работает с файловой системой под винду и одновременно под юниксы то самым рациональным пешением я вижу использование Boost.

        • Visual C++ , !*! pavlinux, 18:12 , 06-Дек-09 (8)
          >[оверквотинг удален]
          >>И ещё сука, POSIX совместимыми себя зовут ...
          >>
          >>
          >>Надо качнуть тут http://www.softagalleria.net/dirent.php
          >>Либо руками расписать свой
          >
          >Windows POSIX-совместимая - это смешно!!!
          >Если надо написать приложение которое работает с файловой системой под винду и
          >одновременно под юниксы то самым рациональным пешением я вижу использование Boost.
          >

          Да не.... Мне надо посмотреть, работает ли оно вообще, и конвертнуть всё это дело в UNIX

          Кстати, нет ли в природе конвертера VCPRO -> Makefile

  • Visual C++ , !*! DeadMustdie, 20:05 , 05-Дек-09 (7)
    При работе в среде Win32, да ещё при использовании MSVC, следует вместо opendir/readir/closedir применять системные вызовы FindFirstFile/FindNextFile/CloseHandle.

    Microsoft никогда не стремилась к совместимости своих ОС с POSIX, и полный набор стандартных вызовов POSIX в Win32 отсутствует. Есть костыли разной степени развитости (MinGW, Cygwin), но их применение сопряжено с использованием GCC как компилятора.

  • Visual C++ , !*! аноним, 17:48 , 07-Дек-09 (9)
    >Компиляция выдаёт ошибку - не определен тип DIR
    >функции opendir(), readdir()
    >и S_ISDIR

    Собрать-то подо что надо, под *nix? Если под винду - то на другой форум. Если под nix, то:

    man opendir, например:

    SYNOPSIS
         #include <sys/types.h>
         #include <dirent.h>

    Соответвенно читаем маны и поделючаем нужные хидеры. Определение DIR - в dirent.h, определение S_ISDIR - в sys/stat.h

    • Visual C++ , !*! pavlinux, 18:17 , 07-Дек-09 (10)
      >[оверквотинг удален]
      >другой форум. Если под nix, то:
      >
      >man opendir, например:
      >
      >SYNOPSIS
      >     #include <sys/types.h>
      >     #include <dirent.h>
      >
      >Соответвенно читаем маны и поделючаем нужные хидеры. Определение DIR - в dirent.h,
      >определение S_ISDIR - в sys/stat.h

      Это я знаю.
      А вот венду со стороны программера видел в последний раз через SoftICE 2.6.2 (вроде), и Delphi 5.0  




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру