Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.07.2019, 13:04   #11
Etsareva
Форумчанин
 
Регистрация: 26.01.2018
Сообщений: 180
По умолчанию

по крайней мере GetDiskFreeSpaceEx() дает ошибку "Access violation...."
Etsareva вне форума Ответить с цитированием
Старый 16.07.2019, 13:09   #12
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Это просто значит, что вы неправильно ее используете.
p51x на форуме Ответить с цитированием
Старый 16.07.2019, 13:45   #13
Etsareva
Форумчанин
 
Регистрация: 26.01.2018
Сообщений: 180
По умолчанию

p51x, использую ее так:
https://www.programmersforum.ru/show...52&postcount=3
TotalBytes=7039385
TotalFree=7039393. и так для любого выбранного диска (Даже жесткого).
Etsareva вне форума Ответить с цитированием
Старый 16.07.2019, 14:20   #14
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Код:
function GetDiskFreeSpaceEx(lpDirectoryName: PChar;
  var lpFreeBytesAvailableToCaller, lpTotalNumberOfBytes; lpTotalNumberOfFreeBytes: PLargeInteger): BOOL; stdcall;
Код:
var lpFreeBytesAvailableToCaller,lpTotalNumberOfBytes,lpTotalNumberOfFreeBytes: Int64;

if Windows.GetDiskFreeSpaceEx(lpDirectoryName, lpFreeBytesAvailableToCaller, lpTotalNumberOfBytes, @lpTotalNumberOfFreeBytes) then ...
и ни чего преобразовывать не нужно
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 16.07.2019, 14:34   #15
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
и ни чего преобразовывать не нужно
Точно!
disk_free.png

только я местами перепутал вывод:
Код:
  lpDirectoryName := 'C:\';
  if Windows.GetDiskFreeSpaceEx(lpDirectoryName, lpFreeBytesAvailableToCaller, lpTotalNumberOfBytes, @lpTotalNumberOfFreeBytes) then begin
    Memo1.Lines.Append('Диск '+lpDirectoryName);
    Memo1.Lines.Append('TotalBytes = '+FloatToStr(lpFreeBytesAvailableToCaller));
    Memo1.Lines.Append('TotalFree = '+FloatToStr(lpTotalNumberOfBytes));

Последний раз редактировалось Serge_Bliznykov; 16.07.2019 в 14:36.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 16.07.2019, 14:58   #16
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

там var параметры по ссылке передаются, что и надо, а последний по значению - добавим @ для передачи адреса
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 16.07.2019, 15:02   #17
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
там var параметры по ссылке передаются, что и надо, а последний по значению - добавим @ для передачи адреса
да, Вы правы!
я убрал этот свой пост.
чтобы не смущать не совсем правильным кодом.
Правильный (рабочий) вариант в вашем сообщении.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 16.07.2019, 15:39   #18
Etsareva
Форумчанин
 
Регистрация: 26.01.2018
Сообщений: 180
По умолчанию

все, конечно, неплохо и место на диске с показал, как положено. но вот с компакт-диском какая-то засада...
Изображения
Тип файла: png Безымянный.png (43.2 Кб, 35 просмотров)
Etsareva вне форума Ответить с цитированием
Старый 16.07.2019, 16:14   #19
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

возможно то api не понимает формат cdfs. А cdfs разве не только для чтения? какой смысл в свободном пространстве? nero api по идее должно знать
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 16.07.2019 в 16:16.
Аватар вне форума Ответить с цитированием
Старый 16.07.2019, 16:22   #20
Etsareva
Форумчанин
 
Регистрация: 26.01.2018
Сообщений: 180
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
А cdfs разве не только для чтения?
да. мне вообще нужно знать занятое пространство. и данные об этом пространстве должны быть считаны из моей программы.
Etsareva вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Система некорректно определят свободное место на HDD Google0_0 Windows 6 11.07.2013 19:52
Снести убунту и вернуть место на диске. viliksar Linux (Ubuntu, Debian, Red Hat, CentOS, Mint) 11 01.05.2013 18:24
возможно затереть все свободное место на жестком диске? goluzov Свободное общение 6 22.02.2012 13:55
Свободное пространства на жестком диске optimator Общие вопросы C/C++ 2 08.07.2011 22:44
Место на жестком диске Gapro Общие вопросы Delphi 3 04.12.2009 20:28