Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > Delphi ругается на название функции


Автор: BEST13 4.11.2011, 22:14
Доброго времени суток формучани,
хочу реализовать я функцию, которая будет мне выдавать букву подключаемого диска(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'
Не могу понять, в чем проблема? 

   

Автор: alexnef 4.11.2011, 22:24
В примере ф-я возвращает string а в реализации char. Может из-за этого. Попробуй подогнать обе ф-ии к одному типу.

Автор: northener 4.11.2011, 23:35
Цитата(alexnef @  4.11.2011,  22:24 Найти цитируемый пост)
а в реализации char.

А где код самой реализации?

Автор: BEST13 5.11.2011, 00:41
alexnef, Delphi подчеркивает именно имя функции " GetFirstDriveLetter ", и пишет то сообщение, которое я выше приводил.
northener, реализациию не писал, ошибка в названии почемоту, или может я не правельно структуру обявил?

Автор: Keeper89 5.11.2011, 01:04
Проблема в том, что надо реализацию добавить, а то компилятор ищет и не находит. Приходится ругаться smile

Автор: BEST13 5.11.2011, 22:00
Да, спасибо всем вы правы) что-то я туплю!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)