Программа, которая использует системные функции для получения информации о файловой системе
Категория: Delphi/Pascal
2011-09-11 18:22:00
В Delphi разработать программу, которая использует системные функции для получения информации о файловой системе. Пояснения: Используются следующие системные функции: GetLogicalDrivers - выдает информацию в виде 32-битового значения, каждый из которых указывает наличие или отсутствие логического устройства; GetDriveType - определяет тип накопителя; GetVolumeInformation - определяет тип файловой системы и др. параметры В среде Delphi разработать форму с комонентами TListBox и Tlabel Определить перечень логических устройств ОС, их номера и типы, название файловой системы, длину имени файла
code: #delphi
unit Unit1; int erface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) ListBox1: TListBox; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; procedure FormCreate(Sender: TObject); procedure ListBox1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.DFM} function DriveExists(Drive: Byte):boolean; var LogDrives: set of 0..25; begin Integer(LogDrives):=GetLogicalDrives; Result:=Drive in LogDrives; end; procedure TForm1.FormCreate(Sender: TObject); var D:byte; begin for d:=0 to 25 do if DriveExists(D) then v begin ListBox1.Items.Add(Chr(D+$41)); end; end; function CheckDriveType(Drive:byte):String; var DriveLetter:Char; DriveType:UInt; begin DriveLetter:=Char(Drive+$41); DriveType:=GetDriveType(PChar(DriveLetter+':\')); Case DriveType of 0 : Result:='Тип устройства не определен'; 1 : Result:='Корневой каталог не существует'; DRIVE_REMOVABLE : Result:='Дисковод со сменным носителем'; DRIVE_FIXED : Result:='Дисковод с несменным носителем'; DRIVE_REMOTE : Result:='Сетевое устройство'; DRIVE_CDROM : Result:='Привод CD-ROM'; DRIVE_RAMDISK : Result:='Диск, созданный в памяти (RAM)'; else Result:='Не определен' end; end; function GetFileSysName(Drive:byte):String; var DriveLetter :Char; NoMatter:Cardinal; FileSysName:Array[0..MAX_PATH] of Char; begin DriveLetter:=Char(Drive+$41); GetVolumeInformation(PChar(DriveLetter+':\'),nil, 0,Nil,NoMatter,NoMatter,FileSysName,SizeOf(FileSysName)); result:=FileSysName; end; function GetFileSysLen(Drive:byte):Integer; var DriveLetter :Char; NoMatter:Cardinal; FileSysName:Array[0..MAX_PATH] of Char; begin DriveLetter:=Char(Drive+$41); GetVolumeInformation(PChar(DriveLetter+':\'),nil, 0,Nil,NoMatter,NoMatter,FileSysName,SizeOf(FileSysName)); result:=SizeOf(FileSysName); end; procedure TForm1.ListBox1Click(Sender: TObject); var Drive:byte; begin with ListBox1 do drive:= ord(Items[ItemIndex][1])-$41; Label1.Caption:='Номер устройства = ' + intToStr(drive); Label2.Caption:=CheckDriveType(Drive); Label3.Caption:='Название файловой системы - ' + GetFileSysName(Drive); Label4.Caption:='Длина имени файла = ' + IntToStr(GetFileSysLen(Drive)); end; end.
Поделиться: