Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Qt: как узнать размер свободного места на разделе? 
V
    Опции темы
Alca
Дата 10.12.2010, 10:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Qt: как узнать размер свободного места на разделе?


--------------------
PM WWW ICQ Skype Jabber   Вверх
SABROG
Дата 10.12.2010, 11:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


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

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



Через Qt никак. Используйте ОС зависимое API.


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
Alca
Дата 10.12.2010, 11:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Жесть 


--------------------
PM WWW ICQ Skype Jabber   Вверх
bsa
Дата 10.12.2010, 17:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

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



Alca, а как ты себе это представляешь кроссплатформенно? В *nix нет дисков (т.е. C:, D:, E:...) - там файловые системы (не обязательно, находящиеся на диске) монтируются на любой существующий каталог. Вот, например, вывод информации о разделах:
Код
$ df -h
Файловая система      Разм  Исп  Дост  Исп% смонтирована на
/dev/sda1              16G  8,7G  6,7G  57% /
udev                   10M  108K  9,9M   2% /dev
/dev/sda3             187G  104G   83G  56% /mnt/backup
/dev/sdb1             3,8G   72M  3,6G   2% /tmp
/dev/sdb2             226G   49G  166G  23% /mnt/var-home
/dev/sda4              30G  9,2G   21G  32% /var/ftp/gentoo.mirror
none                 1006M     0 1006M   0% /dev/shm


Это сообщение отредактировал(а) bsa - 10.12.2010, 17:46
PM   Вверх
Alca
Дата 12.12.2010, 14:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата

В *nix нет дисков (т.е. C:, D:, E:...) 

Цитата

Вот, например, вывод информации о разделах:

Я спрашивал про диски?

Добавлено через 2 минуты и 22 секунды
Цитата

а как ты себе это представляешь кроссплатформенно

в принцие мне надо под никс


--------------------
PM WWW ICQ Skype Jabber   Вверх
Alca
Дата 4.1.2011, 16:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Из Boost-а (/Boost/1.45/libs/filesystem/v3/src/operations.hpp):
Код

  BOOST_FILESYSTEM_DECL
  space_info space(const path& p, error_code* ec)
  {
#ifdef BOOST_POSIX_API
    struct BOOST_STATVFS vfs;
    space_info info;
    if (!error(::BOOST_STATVFS(p.c_str(), &vfs)!= 0,
      p, ec, "boost::filesystem::space"))
    {
      info.capacity  = static_cast<boost::uintmax_t>(vfs.f_blocks) * BOOST_STATVFS_F_FRSIZE;
      info.free      = static_cast<boost::uintmax_t>(vfs.f_bfree)  * BOOST_STATVFS_F_FRSIZE;
      info.available = static_cast<boost::uintmax_t>(vfs.f_bavail) * BOOST_STATVFS_F_FRSIZE;
    }

#else
    ULARGE_INTEGER avail, total, free;
    space_info info;

    if (!error(::GetDiskFreeSpaceExW(p.c_str(), &avail, &total, &free)== 0,
       p, ec, "boost::filesystem::space"))
    {
      info.capacity  = (static_cast<boost::uintmax_t>(total.HighPart)<< 32) + total.LowPart;
      info.free      = (static_cast<boost::uintmax_t>(free.HighPart)<< 32)  + free.LowPart;
      info.available = (static_cast<boost::uintmax_t>(avail.HighPart)<< 32) + avail.LowPart;
    }

#endif

    else
    {
      info.capacity = info.free = info.available = 0;
    }
    return info;
  }


Это сообщение отредактировал(а) Alca - 4.1.2011, 16:25


--------------------
PM WWW ICQ Skype Jabber   Вверх
Alca
Дата 1.7.2011, 17:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



http://codesearch.google.com/#RGCD84x9Jg0/.../XFileUtils.cpp
Код

BOOL GetDiskFreeSpaceEx(
  LPCTSTR lpDirectoryName,
  PULARGE_INTEGER lpFreeBytesAvailable,
  PULARGE_INTEGER lpTotalNumberOfBytes,
  PULARGE_INTEGER lpTotalNumberOfFreeBytes
  )

{
  struct statfs64 fsInfo;
  if (statfs64(_P(lpDirectoryName), &fsInfo) != 0)
    return false;

  if (lpFreeBytesAvailable)
    lpFreeBytesAvailable->QuadPart =  (ULONGLONG)fsInfo.f_bavail * (ULONGLONG)fsInfo.f_bsize;

  if (lpTotalNumberOfBytes)
    lpTotalNumberOfBytes->QuadPart = (ULONGLONG)fsInfo.f_blocks * (ULONGLONG)fsInfo.f_bsize;

  if (lpTotalNumberOfFreeBytes)
    lpTotalNumberOfFreeBytes->QuadPart = (ULONGLONG)fsInfo.f_bfree * (ULONGLONG)fsInfo.f_bsize;

  return true;
}



--------------------
PM WWW ICQ Skype Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель.

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


 




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


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

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