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

gazirov

Member
Joined
Nov 12, 2004
Messages
69
Reaction score
12
Age
38
Location
Сугробинск
вобщем нужна программа которая отображает свободное пространство на указанном пользователем диске

как бы реализовать опрос дисков?
да и вообще как бы все это реализовать
 
Last edited by a moderator:

ploki

Member
Joined
May 16, 2005
Messages
237
Reaction score
180
Location
Москва
Например:
Code:
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 www.torry.net
 

steb

Member
Joined
Dec 13, 2006
Messages
10
Reaction score
2
Age
55
Location
Earth
...Вы также можете использовать функцию GetDiskFreeSpace

Code:
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

Member
Joined
May 16, 2005
Messages
237
Reaction score
180
Location
Москва
to steb

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

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

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

Stern87

New member
Joined
Aug 28, 2008
Messages
2
Reaction score
0
Интересно, зачем оставлять функцию, если для переделки проекта под новую функцию надо просто дописать "Ex"?
 
Top