purebasic.info

PureBasic forum
Текущее время: Ср янв 17, 2018 4:07 pm

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 5 ] 
Автор Сообщение
 Заголовок сообщения: Размер свободного места на диске
СообщениеДобавлено: Пт июн 26, 2015 3:38 pm 
Не в сети
доцент
Аватар пользователя

Зарегистрирован: Ср июн 10, 2015 7:30 pm
Сообщений: 33
Благодарил (а): 5 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Приветствую всех пользователей PureBasic!
Столкнулся с проблемой. Каким образом можно получить информацию о свободном месте в домашней папке пользователя?
В Windows, вроде, есть варианты... А в Linux?
Может кто-либо натыкался на данную информацию.
В DevHelp есть следующее:
Код:
1
2
3
4
GnomeVFSResult
gnome_vfs_get_volume_free_space (const GnomeVFSURI *vfs_uri,
                                 GnomeVFSFileSize *size);
 


Если это ТО, то как им можно воспольоваться в PureBasic?
Заранее всем спасибо!


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Пт июн 26, 2015 3:58 pm 
Не в сети
PureBasic Coder
Аватар пользователя

Зарегистрирован: Чт ноя 10, 2011 10:50 am
Сообщений: 4049
Откуда: Ростов-на-Дону
Благодарил (а): 70 раз.
Поблагодарили: 80 раз.
Пункты репутации: 24
На английском форуме нашел это. Проверить возможности нет, попробуй
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
Structure Statvfs
  f_bsize.i ;file system block size
  f_frsize.i ;fragment size
  f_blocks.i ;size of fs in f_frsize units
  f_bfree.i ;free blocks
  f_bavail.i ;free blocks for unprivileged users
  f_files.i ;inodes
  f_ffree.i ;free inodes
  f_favail.i ;free inodes for unprivileged users
  f_fsid.i ;file system ID
  CompilerIf #PB_Compiler_Processor = #PB_Processor_x86
    __f_unused.l
  CompilerEndIf
  f_flag.i ;mount flags: 1=readonly 2= nosuid
  f_namemax.i ;maximum filename length
  __f_spare.l[6]
EndStructure
 
Structure DriveInfoResult
  Size.q
  Used.q
  Free.q
EndStructure
 
ImportC ""
  statvfs.l(Path.p-utf8, *value.Statvfs)
EndImport
 
Procedure.q DriveInfo(Path.s, *Result.DriveInfoResult)
  Protected v.statvfs
  Statvfs(Path, v)
  *Result\Size = v\f_blocks * v\f_frsize
  *Result\Used = (v\f_blocks - v\f_bfree) * v\f_frsize
  *Result\Free = v\f_bavail * v\f_frsize
EndProcedure
 
DriveInfo(GetHomeDirectory(), r.DriveInfoResult)
Debug r\Size
Debug r\Used
Debug r\Free


_________________
Пурик - лучший язык программирования


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Пт июн 26, 2015 4:47 pm 
Не в сети
доцент
Аватар пользователя

Зарегистрирован: Ср июн 10, 2015 7:30 pm
Сообщений: 33
Благодарил (а): 5 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Ура! Заработало!
Большое спасибо!
Может кто-либо подскажет как кнопку "On/Off" из GTK вставить?
Где-то видел, а где - склероз! Такое ощущение что даже на данном форуме. Но сейчас не нашел.
Спасибо за подсказку!!!

Забыл!!!
Если брать запись из /dev/v4l/by-id/, запись получается слишком длиной.
Каким образом можно получить из данной записи только название камеры.
Вариант с "обрезкой" не прокатил. Разные производители - разный формат перед названием.
Может я что-то упустил?
Спасибо!

PS Нашел!
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
EnableExplicit
 
ImportC ""
   gtk_main_quit_() As "gtk_main_quit"
   g_signal_connect_data_(instance, signal.p-Utf8, callback, *vdata.INTEGER, destroy=0, flags=0) As "g_signal_connect_data"
   gdk_window_get_scale_factor_(window.i) As "gdk_window_get_scale_factor"
EndImport
 
Define.i win
 
gtk_init_(0, 0)
gdk_init_(0, 0)
 
win = gtk_window_new_(#GTK_WINDOW_TOPLEVEL)
g_signal_connect_data_(win, "destroy", @gtk_main_quit_(), 0)
 
gtk_widget_show_(win)
Debug gdk_window_get_scale_factor_(win)
 
gtk_main_()



Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Сб июн 27, 2015 3:10 am 
Не в сети
профессор

Зарегистрирован: Пн июл 22, 2013 11:00 pm
Сообщений: 552
Благодарил (а): 2 раз.
Поблагодарили: 30 раз.
Пункты репутации: 9
А зачем в процедуре возвращаемый параметр?
Если воспользоваться для Statvfs(Path, v) то у неё лонг. :roll:
Код:
1
2
3
4
5
6
7
Procedure.q DriveInfo(Path.s, *Result.DriveInfoResult)
  Protected v.statvfs
  Statvfs(Path, v)
  *Result\Size = v\f_blocks * v\f_frsize
  *Result\Used = (v\f_blocks - v\f_bfree) * v\f_frsize
  *Result\Free = v\f_bavail * v\f_frsize
EndProcedure



Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Пн июл 13, 2015 1:46 pm 
Не в сети
доцент
Аватар пользователя

Зарегистрирован: Ср июн 10, 2015 7:30 pm
Сообщений: 33
Благодарил (а): 5 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Решил "по другому"...
Код:
1
Result = RunProgram("df","-h " + GetHomeDirectory() + "media","",#PB_Program_Open|#PB_Program_Read)


Получаем на выходе всю информацию: занято, всего, процент использования
Надо только "разобрать" строку
Не знаю причину, но с предложенным вариантом периодически вылетала ошибка и "зависание"...
Может быть и у меня руки "кривые".
Всем огросное спасибо за участие!


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 5 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Group (блог о phpBB)
Сборка создана CMSart Studio
Русская поддержка phpBB