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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Определение места, Как определить место на HDD 
:(
    Опции темы
W_A_K_E
  Дата 1.2.2005, 18:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Подскажите плиз как можно определить обьем и свободное или занятое место на харде и чтобы отображалось например вот так
обьем: 80,0 Гб
Свободно: 30.6 Гб
Занято: 49.4 Гб
Я использую вот такую функцию но как мне её доработать подскажите плиз

Код


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);
    // this to turn back to original dir
   SetCurrentDir(current_dir);
    Result := True;
  end
  else
  begin
    Result := False;
    Free_size  := -1;
    Total_size := -1;
  end;
end;


procedure TForm1.Button1Click(Sender: TObject);
var
  free_size, total_size: Int64;
begin
  if GetDiskSize(DriveComboBox1.Drive, free_size, total_size) then begin
      Label1.Caption:=FloatToStr((free_size div 1073741824))+' Гб';
      Label2.Caption:=FloatToStr(total_size div 1073741824)+' Гб';
      Label3.Caption:=FloatToStr((total_size-free_size) div 1073741824)+' Гб' end
  else
    ShowMessage('No disk in drive!');
end;

Заранее благодарен




Это сообщение отредактировал(а) W_A_K_E - 1.2.2005, 20:21
PM MAIL   Вверх
Vit
Дата 1.2.2005, 19:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

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



Стандартные дельфийские функции


DiskFree(Drive: Byte): Int64;
function DiskSize(Drive: Byte): Int64;

А в чём должны заключаться доработки?


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
W_A_K_E
Дата 1.2.2005, 20:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(W_A_K_E @ 1.2.2005, 18:32)
  if GetDiskSize(DriveComboBox1.Drive, free_size, total_size) then begin
      Label1.Caption:=FloatToStr((free_size div 1073741824))+' Гб';
      Label2.Caption:=FloatToStr(total_size div 1073741824)+' Гб';
      Label3.Caption:=FloatToStr((total_size-free_size) div 1073741824)+' Гб' end
  else
    ShowMessage('No disk in drive!');


Вот тут надо доработать так чтобы в строках Label1-Label3 показывало не целое число, а с остатком
у меня он округляет и пишет в label1 12 Гб а надо чтоб с остатком например 12,1 Гб (Ну как в свойствах диска C:)

Там просто нужно видимо выполнить некоторые математические операции
PM MAIL   Вверх
Vit
Дата 1.2.2005, 20:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

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



Код

Label1.Caption:=Format('Свободно %f Gb', [free_size/1073741824]);


Подробнее смотри Help по функции Format - там много интересного...


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
W_A_K_E
Дата 1.2.2005, 21:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Vit Большое тебе спасибо за помощь, а help я обязательно прочитаю... Еще раз пасиба
PM MAIL   Вверх
W_A_K_E
Дата 2.2.2005, 11:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Кстати Vit ты не знаешь где можно скачать русифицированую справку под делфи 7?

PM MAIL   Вверх
z-END
Дата 2.2.2005, 12:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прафесар™
****


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

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



Код

function ByteToStr(X:Int64):String;
var
St: String;
fx: Real;
Step: Integer;
begin
Fx:=x; Step:=0;
while Fx>999 do
begin
 Fx:=Fx/1024;
 Inc(Step);
end;
if Step > 0
then str(fx:4:2,St)
else St:=IntToStr(X);
case Step of
0: Result:=StringReplace(St,'.',',',[rfReplaceAll])+' байт';
1: Result:=StringReplace(St,'.',',',[rfReplaceAll])+' Кб';
2: Result:=StringReplace(St,'.',',',[rfReplaceAll])+' Мб';
3: Result:=StringReplace(St,'.',',',[rfReplaceAll])+' Гб';
else Result:= StringReplace(St,'.',',',[rfReplaceAll])+' Тб';
end;
end;



--------------------
Каждый чилавек пасвоему праф...а памоему НЕТ! 

PM WWW ICQ   Вверх
Vit
Дата 2.2.2005, 20:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

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



Цитата(W_A_K_E @ 2.2.2005, 02:09)
Кстати Vit ты не знаешь где можно скачать русифицированую справку под делфи 7?



Знаю, называется "учебник английского языка" - есть в любом магазине


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
W_A_K_E
Дата 2.2.2005, 22:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(Vit @ 2.2.2005, 20:52)
Знаю, называется "учебник английского языка" - есть в любом магазине

smile
У меня был когда то, пока у меня хард не полетел я скачивал с местного сервака а щас немогу потому что я немного поиздевался над ним smile
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

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

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

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


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

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


 




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


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

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