Помощь - Поиск - Пользователи - Календарь
Полная версия: Формирование протоколов
Форум «Всё о Паскале» > Современный Паскаль и другие языки > Делфи
Atreides

В задание к курсовой попалось два вопроса:
1. Формирование протокола использования процессора (дата, время начала и окончания прикладного процесса).
2. Протоколирование моментов изменений в файловой системе и самих изменений в заданном каталоге.
Как это понимать и сделать?
Еще одно задание я выполнил только на половину: Вывод текущего объема свободной и занятой дисковой памяти на каждом логическом устройстве (диаграмма) и сведений о возможностях файловой системы на каждом устройстве. Сведения я получил, а вот как определить свободное и занятое место и вывести результат в виде диаграммы?
Артемий
а ты прикрепи то что делал и посмотрим! yes2.gif
Atreides
Да, вот высведений о возможностях файловой системы на каждом устройстве:
Код
//получение свободного места на HD
procedure TForm1.UpdateDisk;
var
lpRootPathName           : PChar;
lpVolumeNameBuffer       : PChar;
nVolumeNameSize          : DWORD;
lpVolumeSerialNumber     : DWORD;
lpMaximumComponentLength : DWORD;
lpFileSystemFlags        : DWORD;
lpFileSystemNameBuffer   : PChar;
nFileSystemNameSize      : DWORD;

FSectorsPerCluster: DWORD;
FBytesPerSector   : DWORD;
FFreeClusters     : DWORD;
FTotalClusters    : DWORD;
begin
lpVolumeNameBuffer      := '';
lpVolumeSerialNumber    := 0;
lpMaximumComponentLength:= 0;
lpFileSystemFlags       := 0;
lpFileSystemNameBuffer  := '';

try
  GetMem(lpVolumeNameBuffer, MAX_PATH + 1);
  GetMem(lpFileSystemNameBuffer, MAX_PATH + 1);
  nVolumeNameSize := MAX_PATH + 1;
  nFileSystemNameSize := MAX_PATH + 1;

  lpRootPathName := PChar(DriveComboBox1.Drive+':\');
  if GetVolumeInformation( lpRootPathName, lpVolumeNameBuffer,
      nVolumeNameSize, @lpVolumeSerialNumber, lpMaximumComponentLength,
      lpFileSystemFlags, lpFileSystemNameBuffer, nFileSystemNameSize )
   then
     begin
      Volume_Name.Caption    := lpVolumeNameBuffer;
      Volume_Serial.Caption  := IntToHex(HIWord(lpVolumeSerialNumber), 4) + '-' + IntToHex(LOWord(lpVolumeSerialNumber), 4);
      File_System_Name.Caption:= lpFileSystemNameBuffer;
      GetDiskFreeSpace( PChar(DriveComboBox1.Drive+':\'), FSectorsPerCluster, FBytesPerSector,  FFreeClusters, FTotalClusters);
     end;
finally
  FreeMem(lpVolumeNameBuffer);
  FreeMem(lpFileSystemNameBuffer);
  end;
Sectors_PerCluster.Caption:=IntToStr(FSectorsPerCluster);
Bytes_PerSector.Caption:=IntToStr(FBytesPerSector);
end;



procedure TForm1.DriveComboBox1Change(Sender: TObject);
begin
UpdateDisk;
end;

Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.