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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Занятое место на винче. 
V
    Опции темы
ne0n
Дата 23.4.2006, 14:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


PlayBoy
**


Профиль
Группа: Участник
Сообщений: 733
Регистрация: 5.8.2005
Где: Н.Новгород

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



Вобщем надо определить сколько  Мегабайт( или байт, не важно ) занимают файлы на всем винче?   
PM MAIL ICQ   Вверх
Albinos_x
Дата 23.4.2006, 14:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

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



перебираешь диски, смотришь размер диска и свободное место, из первого вычитаешь второе и суммируешь...

Добавлено @ 14:53 
Цитата(Albinos_x @  23.4.2006,  14:47 Найти цитируемый пост)
смотришь размер диска и свободное место, из первого вычитаешь второе и суммируешь... 


Цитата

function DiskFree(Drive: Byte): Longint;   Возвращает количество в байтах свободного места на заданном диске. Значение параметра Drive: 0 — для текущего диска, 1 — для А, 2 — для В и т. д. Если параметр неверен, функция возвращает -1. 
    
function DiskSize(Drive: Byte): Longint;   Возвращает размер диска Drive в байтах. Параметр Drive означает то же, что и в DiskFree. 


Цитата(Albinos_x @  23.4.2006,  14:47 Найти цитируемый пост)
перебираешь диски

Код
...
var
  Drive: Char; // Буква диска
  lst:TStringList;
  sf:string;
const
  pref = ':\';
begin
lst:=TStringList.Create;
lst.Clear;
for Drive:= 'A' to 'Z' do
   if GetDriveType(PChar(Drive + pref)) = DRIVE_FIXED then
      lst.Add(Drive + pref);
...
lst.Free;
...
 


--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
Poseidon
Дата 23.4.2006, 14:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

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



Вот накидал тут, разберешся.

Код
uses Math;

function GetHDDUsedSpace: Currency;
var
 DriveChar: char;
 Drive: array of byte;
 i: integer;
 res: Currency;
begin
i:= 0;
 for DriveChar:= 'A' to 'Z' do
  begin
  inc(i);
  if GetDriveType(PChar(DriveChar + ':\')) = DRIVE_FIXED
  then
    begin
    SetLength(Drive, Length(Drive)+1);
    Drive[Length(Drive)-1]:= i;
    end;
  end;

Res:= 0;
for i:= 0 to Length(Drive)-1 do
Res:= Res + SimpleRoundTo(DiskSize(Drive[i])/(1024*1024) -
                          DiskFree(Drive[i])/(1024*1024), -2);

Result:= res;
end;

// использование
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage(FloatToStr(GetHDDUsedSpace) + ' MB');
end;

    

Это сообщение отредактировал(а) Poseidon - 23.4.2006, 15:05


--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
Albinos_x
Дата 23.4.2006, 14:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

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



Цитата(Albinos_x @  23.4.2006,  14:47 Найти цитируемый пост)
перебираешь диски

хотя для перебора в твоём случае достаточно запутить обыный цыкл от 0 до 23...

Добавлено @ 15:02 
т.е. :
Код

...
GlobalSz:=0;
for i:=1 to 23 do
   begin
   fr:=DiskFree(i);
   if fr>=0 then
     begin
     Sz:=DiskSize(i);
     GlobalSz:=GlobalSz+(Sz-fr);
     end;
   end;
ShowMessage('размер всех файло равен = '+floattostr(GlobalSz/1048576)+' Мб');
...
 


--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
Albinos_x
Дата 23.4.2006, 15:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

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



приведённый код получит размер всех файлов включая флоп и СD, если они установлены, если нужно только HDD, то:
Код
...
// функция получения размера всех файлов на всех дисках в байтах
function GlobalFileSize:Int64;
var i : byte;
     GlobalSz, fr, Sz : Int64; 
begin
GlobalSz:=0;    
for i:=1 to 23 do    
   begin
  if GetDriveType(PChar(char(i+$41) + ':\'))=Drive_Fixed then
      begin    
      fr:=DiskFree(i);    
      if fr>=0 then    
        begin    
        Sz:=DiskSize(i);    
        GlobalSz:=GlobalSz+(Sz-fr);    
        end;
      end;    
   end;    
Result:=GlobalSz;
end;

// использование
procedure TForm1.SpeedButton1Click(Sender: TObject);  
begin  
ShowMessage('размер всех файло равен = '+floattostr(GlobalFileSize/1048576)+' Мб');    
end;
...

  

Это сообщение отредактировал(а) Albinos_x - 23.4.2006, 15:19


--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
ne0n
Дата 24.4.2006, 14:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


PlayBoy
**


Профиль
Группа: Участник
Сообщений: 733
Регистрация: 5.8.2005
Где: Н.Новгород

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



Albinos_x,  опять выручаешь. + 
PM MAIL ICQ   Вверх
Albinos_x
Дата 24.4.2006, 20:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

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



 smile  smile  smile  


--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.0466 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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