Два компьютершика спорят:
- Можно ли научить "комп" заикаться?
- Да ты что никогда!
Второй:
- Берет магнит и начинает водить возле винчестера!
В итоге получается песня Расторгуева+Леонидов: "Давай за баранку держись, давай брат шофер до конца"...
function GetVolumeInfoFVS(const Dir:string;
var FileSystemName,VolumeName:string;var Serial:longint):boolean;
{Dir - каталог или буква требуемого диска
FileSystemName - название файловой системы
VolumeName - метка диска
Serial - серийный номер диска
В случае ошибки функция возвращает false}var
root:pchar;
res:longbool;
VolumeNameBuffer,FileSystemNameBuffer:pchar;
VolumeNameSize,FileSystemNameSize:DWord;
VolumeSerialNumber,MaximumComponentLength,FileSystemFlags:DWORD;
s:string;
n:integer;
begin
n:=pos(':',Dir);
if n> 0 then s:=copy(Dir,1,n+1) else s:=s+':';
if s[length(s)]=':' then s:=s+'\';
root:=pchar(s);
getMem(VolumeNameBuffer,256);
getMem(FileSystemNameBuffer,256);
VolumeNameSize:=255;
FileSystemNameSize:=255;
res:=GetVolumeInformation(Root,VolumeNameBuffer,VolumeNameSize
,@VolumeSerialNumber,
MaximumComponentLength, FileSystemFlags
,FileSystemNameBuffer,FileSystemNameSize);
Result:=res;
VolumeName:=VolumeNameBuffer;
FileSystemName:=FileSystemNameBuffer;
Serial:=VolumeSerialNumber;
freeMem(VolumeNameBuffer,256);
freeMem(FileSystemNameBuffer,256);
end;
Функция Delphi для получения информации о томном объеме!
Функция GetVolumeInfoFVS принимает несколько параметров:
Dir: строка, представляющая директорию или букву диска, для которого вы хотите получить информацию.
FileSystemName, VolumeName и Serial: переменные, которые будут заполнены соответствующей информацией о диске.
Функция возвращает булевое значение, указывающее, была ли операция успешной. Если возникает ошибка, она возвращает false.
Вот шаг за шагом, что код делает:
Он извлекает букву диска из входной строки Dir с помощью функции pos.
Он конструирует строку пути, добавляя двоеточие (:) или обратный слеш (\) к букве диска, в зависимости от того, является ли это директориями.
Он выделяет память для двух буферов: VolumeNameBuffer и FileSystemNameBuffer, каждый с размером 256 байт.
Он вызывает функцию Windows API GetVolumeInformation с конструированной строкой пути в качестве входного параметра. Функция получает информацию о томном объеме, включая имя файловой системы, имя тома, серийный номер, максимальную длину компонента и флаги файловой системы.
Функция заполняет переменные VolumeName, FileSystemName и Serial полученными значениями.
Наконец, она освобождает выделившуюся память с помощью функции freeMem.
Некоторые примечания:
Функция GetVolumeInformation доступна только на системах Windows.
Функция GetVolumeInformation может неудачно выполниться по разным причинам, таким как недопустимый ввод или ошибки диска. В этом случае функция возвращает код ошибки, который можно проверить для определения причины неудачи.
Выделяемые память буферы не необходимы в Delphi; вы могли бы использовать переменные строкового типа вместо них.
В целом, это полезная функция для получения информации о томных объемах в приложении Delphi!
Функция GetVolumeInfoFVS позволяет получить информацию о диске, включая название файловой системы, метку диска, серийный номер и другие параметры.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.