И был свет...
И была тьма...
И загрузилась Windows!
uses ShellAPI;
function MrsGetFileType(const strFilename: string): string;
var
FileInfo: TSHFileInfo;
begin
FillChar(FileInfo, SizeOf(FileInfo), #0);
SHGetFileInfo(PChar(strFilename), 0, FileInfo, SizeOf(FileInfo), SHGFI_TYPENAME);
Result := FileInfo.szTypeName;
end;
// Example: procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage('File type is: ' + MrsGetFileType('c:\autoexec.bat'));
end;
Here is the translation of the text into Russian:
Делфи-программный код, который использует интерфейс оболочки Windows для получения типа файла.
Обзор кода:
Директива uses на верху импортирует модуль ShellAPI, который обеспечивает доступ к оболочке Windows.
Функция MrsGetFileType принимает аргумент const strFilename: string и возвращает тип файла как строку.
Внутри функции:
var FileInfo: TSHFileInfo; объявляет переменную типа TSHFileInfo, которая является записью, содержащей информацию о файле.
FillChar(FileInfo, SizeOf(FileInfo), #0); инициализирует запись FileInfo с помощью установки всех байтов в 0.
SHGetFileInfo(PChar(strFilename), 0, FileInfo, SizeOf(FileInfo), SHGFI_TYPENAME) вызывает функцию Windows SHGetFileInfo, чтобы получить информацию о файле. Параметры:
PChar(strFilename): указатель на входную строку (имя файла).
0: необязательный параметр, который specifies дополнительные флаги, но в этом случае он установлен в 0.
FileInfo: указатель на запись FileInfo, где функция будет хранить результат.
SizeOf(FileInfo): размер записи FileInfo в байтах.
SHGFI_TYPENAME: флаг, который specifies, какой информации получить. В этом случае он установлен для получения типа файла (typename).
Result := FileInfo.szTypeName; присваивает значение FileInfo.szTypeName переменной Result, которая возвращает функция.
Пример кода в процедуре TForm1.Button1Click демонстрирует, как использовать функцию MrsGetFileType:
Он вызывает функцию MrsGetFileType с именем файла 'c:\autoexec.bat'.
Результат (тип файла) отображается в сообщении об ошибке.
Вывод этого кода будет: "Тип файла: Batch File", потому что файл 'c:\autoexec.bat' имеет расширение batch-файла.
Для улучшения содержимого я бы предложил добавить комментарии, чтобы объяснить, что каждый часть кода делает. Кроме того, всегда полезно обрабатывать ошибки и исключения при работе с внешними API, такими как интерфейс оболочки Windows.
В статье описывается функция на языке Delphi, которая позволяет получать тип файла в системе Windows с помощью API-интерфейса Shell.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.