Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Delphi 2010, WinAPI-функция GetDiskFreeSpaceEx 
V
    Опции темы
grh
Дата 2.6.2016, 12:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Всем привет. У меня такая проблема:
Необходимо вывести информацию о диске C:\ с помощью WinAPI-функции GetDiskFreeSpaceEx. Имеется следующий программный код:

Код

procedure TForm1.Button1Click(Sender: TObject);
var
  lpRootPathName:PChar;
  lpFreeBytesAvailable:PLargeInteger;
  lpTotalNumberOfBytes:PLargeInteger;
  lpTotalNumberOfFreeBytes:PLargeInteger;
begin
  new(lpFreeBytesAvailable);
  new(lpTotalNumberOfBytes);
  new(lpTotalNumberOfFreeBytes);
  lpRootPathName:=StringToOleStr('C:\');
  if not Windows.GetDiskFreeSpaceEx(lpRootPathName,lpFreeBytesAvailable,
  lpTotalNumberOfBytes,lpTotalNumberOfFreeBytes) then
  begin
    lpFreeBytesAvailable^:=0;
    lpTotalNumberOfBytes^:=0;
    lpTotalNumberOfFreeBytes^:=0;
  end;
  ShowMessage('Диск С:'+#13#10+
  'lpFreeBytesAvailable = '+inttostr(lpFreeBytesAvailable^)+#13#10+
  'lpTotalNumberOfBytes = '+inttostr(lpTotalNumberOfBytes^)+#13#10+
  'lpTotalNumberOfFreeBytes = '+inttostr(lpTotalNumberOfFreeBytes^))
end;


После запуска программы и нажатия кнопки Button1 на экране появляется сообщение об ошибке:

Project Project1.exe raised exception class EAccessViolation with message 'Access violation at address 004B3465 in module 'Project1.exe'. Read of address 00000008'.

Как исправить ошибку, подскажите пожалуйста.
PM MAIL   Вверх
grh
Дата 3.6.2016, 12:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Проблема решена с помощью функций DiskSize, DiskFree.
Код

procedure TForm1.Button1Click(Sender: TObject);
var DS,DF:int64;
begin
  DS:=DiskSize(3);DF:=DiskFree(3);
  ShowMessage('Диск С:'+#13#10+'DiskSize = '+inttostr(DS)+#13#10+
  'DiskFree = '+inttostr(DF))
end;

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: WinAPI и системное программирование"
Snowybartram
MetalFanbems
PoseidonRrader
Riply

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • 99% ответов по WinAPI можно найти в MSDN Library, оставшиеся 1% здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема »


 




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


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

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