графическое приложение на Windows API

gazirov

Местный
Регистрация
12 Ноя 2004
Сообщения
69
Реакции
12
Credits
80
вобщем нужна программа которая отображает свободное пространство на указанном пользователем диске

как бы реализовать опрос дисков?
да и вообще как бы все это реализовать
 
Последнее редактирование модератором:

ploki

Местный
Регистрация
16 Май 2005
Сообщения
237
Реакции
180
Credits
0
Например:
Код:
function GetDiskSize(drive: Char; var free_size, total_size: Int64): Boolean;
var
  RootPath: array[0..4] of Char;
  RootPtr: PChar;
  current_dir: string;
begin
  RootPath[0] := Drive;
  RootPath[1] := ':';
  RootPath[2] := '\';
  RootPath[3] := #0;
  RootPtr := RootPath;
  current_dir := GetCurrentDir;
  if SetCurrentDir(drive + ':\') then
  begin
    GetDiskFreeSpaceEx(RootPtr, Free_size, Total_size, nil);
    SetCurrentDir(current_dir);
    Result := True;
  end
  else
  begin
    Result := False;
    Free_size  := -1;
    Total_size := -1;
  end;
end;

From Для просмотра ссылки Войди или Зарегистрируйся
 

steb

Турист
Регистрация
13 Дек 2006
Сообщения
10
Реакции
2
Credits
20
...Вы также можете использовать функцию GetDiskFreeSpace

Код:
var
  drv         : String;
  SectPerCls,
  BytesPerCls,
  FreeCls,
  TotCls      : DWord;
begin
  drv := 'C:\';
  GetDiskFreeSpace(PChar(drv), SectPerCls, BytesPerCls, FreeCls, TotCls);
  Label11.Caption := FormatFloat('0.00', (SectPerCls * BytesPerCls *
                                          TotCls)/1000000) + ' MB';
  Label12.Caption := FormatFloat('0.00', (SectPerCls * BytesPerCls *
                                          FreeCls)/1000000) + ' MB';

end;
 

ploki

Местный
Регистрация
16 Май 2005
Сообщения
237
Реакции
180
Credits
0
to steb

Функция GetDiskFreeSpace не рекомендуется к использованию и оставлена только для совместимости!!!

Она не работает с разделами, размер которых больше 2ГБ, поскольку использует тип DWord (32 bit).

Пользуйтесь функцией GetDiskFreeSpaceEx.
 

Stern87

Турист
Регистрация
28 Авг 2008
Сообщения
2
Реакции
0
Credits
4
Интересно, зачем оставлять функцию, если для переделки проекта под новую функцию надо просто дописать "Ex"?