{
The following example shows a Linux-Console application, which mount
the floppy.
}program Project1;
{$APPTYPE CONSOLE}uses
Libc;
beginif mount('/dev/fd0', '/mnt/floppy', 'vfat', MS_RDONLY, nil) = -1 then
WriteLn('Mount return : ', Errno, '(', strerror(errno), ')')
else
WriteLn('Floppy mounted');
end.
Программа - классический пример консольного приложения Linux!
Программа предназначена для монтирования флоппийского диска с помощью команды mount из библиотеки C (Libc). Вот разбивка на части:
Заголовок: Первая строка, program Project1;, определяет имя проекта Delphi.
Клаусула использования: Строка uses Libc; импортирует библиотеку C (libc) в программу.
Основная программа: Блок begin...end. содержит основной код.
Монтирование флоппийского диска:
if mount('/dev/fd0', '/mnt/floppy', 'vfat', MS_RDONLY, nil) = -1 then: Эта строка пытается монтировать флоппийский диск в директории /mnt/floppy с помощью команды mount.
/dev/fd0 - файл устройства для флоппийского диска.
/mnt/floppy - точка монтирования, где будет монтироваться флоппийский диск.
'vfat' - тип файловой системы (VFAT) флоппийского диска.
MS_RDONLY - указывает, что флоппийский диск должен быть монтирован только для чтения.
nil - используется как placeholder для дополнительных параметров монтирования, которые не нужны в этом случае.
Если операция монтирования fails, программа печатает сообщение об ошибке с кодом возврата (Errno) и соответствующим строкой ошибки (strerror(errno)). Если операция монтирования succeeds, она печатает "Floppy mounted".
Альтернативное решение: Если вы хотите использовать более современный подход, можно использовать unit Win32 в Delphi для взаимодействия с Windows API. В частности, можно использовать функцию CreateFile для открытия файла устройства флоппийского диска и функцию DeviceIoControl для отправки IOCTL-кода для монтирования флоппийского диска.
Вот пример, как это можно сделать:
program Project1;
uses
Winapi.Windows,
Winapi.Messages;
const
IOCTL_MOUNT = $20000000;
MOUNT_FLOPPY = 0x0201;
var
hDevice: THandle;
dwIoControlCode: DWORD;
lpInBuffer: PChar;
lpOutBuffer: PChar;
nInBufferSize: Integer;
nOutBufferSize: Integer;
begin
hDevice := CreateFile(PChar('/dev/fd0'), GENERIC_READ or GENERIC_WRITE, 0, nil, OPEN_EXISTING, 0, 0);
if hDevice <> INVALID_HANDLE_VALUE then
begin
dwIoControlCode := IOCTL_MOUNT;
lpInBuffer := PChar('floppy');
nInBufferSize := Length(lpInBuffer);
lpOutBuffer := nil;
nOutBufferSize := 0;
if DeviceIoControl(hDevice, dwIoControlCode, lpInBuffer, nInBufferSize, lpOutBuffer, nOutBufferSize, nil) then
WriteLn('Floppy mounted')
else
WriteLn('Error mounting floppy');
CloseHandle(hDevice);
end
else
WriteLn('Error opening floppy device');
end.
Код более платформо-зависимый и требует доступа к Windows API. Функция CreateFile открывает файл устройства флоппийского диска, а функция DeviceIoControl отправляет IOCTL-кода для монтирования флоппийского диска.
В статье описывается пример программы на языке Delphi, которая позволяет монтировать флоппи-устройство в Linux-системе.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.