Доброго времени суток формучани, хочу реализовать я функцию, которая будет мне выдавать букву подключаемого диска(USB). Вот есть пример:
Код | function GetDrive(pDBVol: PDevBroadcastVolume): string; var i: Byte; Maske: DWORD; begin Maske := pDBVol^.dbcv_unitmask; for i := 0 to 25 do begin if (Maske and 1) = 1 then Result := Char(i + Ord('A')) + ':'; Maske := Maske shr 1; end end;
procedure tf.WndProc(var Msg: TMessage); // перехват события USB- begin if msg.WParam = DBT_DEVICEARRIVAL then if PDevBroadcastHdr(Msg.lParam)^.dbcd_devicetype = DBT_DevTyp_Volume then messagebox(handle,pchar(GetDrive(PDevBroadcastVolume(Msg. lParam))),'',0); end;
|
пытаюсь его реализовать :
Код | function GetFirstDriveLetter(unitmask: Longint): Char;
private procedure WMDeviceChange(var Msg: TMessage); message WM_DEVICECHANGE; public end; type {DEV_BROADCAST_HDR структура служит стандартнным заголовком для инфо связаной с устройством, о событии которого было сообщено через сообщение WM_DEVICECHANGE.} PDEV_BROADCAST_HDR = ^_DEV_BROADCAST_HDR;
_DEV_BROADCAST_HDR = record dbch_size, dbch_devicetype, dbch_reserved:DWORD; end;
PDevBroadcastVolume = ^TDevBroadcastVolume; DEV_BROADCAST_VOLUME = packed record dbcv_size: DWORD; dbcv_devicetype: DWORD; dbcv_reserved: DWORD; dbcv_unitmask: DWORD; dbcv_flags: Word; end; TDevBroadcastVolume = DEV_BROADCAST_VOLUME;
|
И вот компилятор выдает такую ошибку: [DCC Error] U_BSF.pas(23): E2065 Unsatisfied forward or external declaration: 'TForm1.GetFirstDriveLetter' Не могу понять, в чем проблема?
|