Недавно добавленные исходники

•  TDictionary Custom Sort  514

•  Fast Watermark Sources  878

•  3D Designer  1 809

•  Sik Screen Capture  1 458

•  Patch Maker  1 465

•  Айболит (remote control)  1 390

•  ListBox Drag & Drop  1 163

•  Доска для игры Реверси  21 337

•  Графические эффекты  1 339

•  Рисование по маске  1 278

•  Перетаскивание изображений  1 091

•  Canvas Drawing  965

•  Рисование Луны  803

•  Поворот изображения  758

•  Рисование стержней  804

•  Paint on Shape  489

•  Генератор кроссвордов  750

•  Головоломка Paletto  661

•  Теорема Монжа об окружностях  842

•  Пазл Numbrix  609

•  Заборы и коммивояжеры  835

•  Игра HIP  551

•  Игра Go (Го)  523

•  Симулятор лифта  544

•  Программа укладки плитки  505

•  Генератор лабиринта  561

•  Проверка числового ввода  521

•  HEX View  596

•  Физический маятник  522

•  Задача коммивояжера  556

 
скрыть


Delphi FAQ - Часто задаваемые вопросы

| Базы данных | Графика и Игры | Интернет и Сети | Компоненты и Классы | Мультимедиа |
| ОС и Железо | Программа и Интерфейс | Рабочий стол | Синтаксис | Технологии | Файловая система |



Определение размера диска и свободного пространства на нём




Магазин по пpодаже компьютеpов. Пpодавец подбиpает богатой, но не понимающей в комьютеpах даме:
- Hу вот, я вам подобpал жесткий диск получше?...
- Получше - это пожестче?

Сначала до слова implementation напишем такой код:


function GetDiskFreeSpaceEx(lpDirectoryName: PAnsiChar;
var lpFreeBytesAvailableToCaller : Integer;
var lpTotalNumberOfBytes: Integer;
var lpTotalNumberOfFreeBytes: Integer) : bool;
stdcall;
external kernel32
name 'GetDiskFreeSpaceExA';

Затем после слова implementation:


procedure GetDiskSizeAvail(TheDrive : PChar;
  var TotalBytes : double; var TotalFree : double);
var
  AvailToCall : integer;
  TheSize : integer;
  FreeAvail : integer;
begin
  GetDiskFreeSpaceEx(TheDrive, AvailToCall, TheSize, FreeAvail);
  {$IFOPT Q+}
  {$DEFINE TURNOVERFLOWON}
  {$Q-}
  {$ENDIF}
  if TheSize >= 0 then
    TotalBytes := TheSize
  else
  if TheSize = -1 then
  begin
    TotalBytes := $7FFFFFFF;
    TotalBytes := TotalBytes * 2;
    TotalBytes := TotalBytes + 1;
  end
  else
  begin
    TotalBytes := $7FFFFFFF;
    TotalBytes := TotalBytes + abs($7FFFFFFF - TheSize);
  end;

  if AvailToCall >= 0 then
    TotalFree := AvailToCall
  else
  if AvailToCall = -1 then
  begin
    TotalFree := $7FFFFFFF;
    TotalFree := TotalFree * 2;
    TotalFree := TotalFree + 1;
  end
  else
  begin
    TotalFree := $7FFFFFFF;
    TotalFree := TotalFree + abs($7FFFFFFF - AvailToCall);
  end;
end;

И, наконец, обработаем нажатие кнопки следующим образом:


procedure TForm1.Button1Click(Sender: TObject);
var
  TotalBytes: double;
  TotalFree: double;
begin
  GetDiskSizeAvail('C:\', TotalBytes, TotalFree);
  ShowMessage(FloatToStr(TotalBytes));
  ShowMessage(FloatToStr(TotalFree));
end;





Похожие по теме исходники

Тестирование - Немецкий язык

Ход конем (шахматы)




Copyright © 2004-2022 "Delphi Sources" by BrokenByte Software. Delphi World FAQ

Группа ВКонтакте   Facebook   Ссылка на Twitter   Ссылка на Telegram