Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Делфи _ Формирование протоколов

Автор: Atreides 25.03.2007 18:58


В задание к курсовой попалось два вопроса:
1. Формирование протокола использования процессора (дата, время начала и окончания прикладного процесса).
2. Протоколирование моментов изменений в файловой системе и самих изменений в заданном каталоге.
Как это понимать и сделать?
Еще одно задание я выполнил только на половину: Вывод текущего объема свободной и занятой дисковой памяти на каждом логическом устройстве (диаграмма) и сведений о возможностях файловой системы на каждом устройстве. Сведения я получил, а вот как определить свободное и занятое место и вывести результат в виде диаграммы?

Автор: Артемий2 26.03.2007 0:10

а ты прикрепи то что делал и посмотрим! yes2.gif

Автор: Atreides 26.03.2007 21:38

Да, вот высведений о возможностях файловой системы на каждом устройстве:

Код
//получение свободного места на 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;