unit ScaleReg; // Регистрирует драйвер; сервер оборудования; редактор этикеток interface uses // VCL SysUtils, Windows, Forms, Dialogs, ComObj, // This BDrvUtil, Scale1C_TLB; const STR_Scale1C_FILE = 'Scale1C.dll'; STR_REG_DLL = 'Необходимо зарегистрировать драйвер. '#13+ 'Укажите местоположение файла драйвера %s'; function RegisterScale_DLL: IScale1C; implementation function RegisterDriver(const CLSID: TGUID; const Query: String; const FileName: String): Boolean; var OpenDialog: TOpenDialog; begin with Application do if MessageBox( PChar(Format(Query, [FileName])), PChar(Title), mb_IconExclamation or mb_OKCancel) = IdCancel then Abort; OpenDialog := TOpenDialog.Create(nil); try OpenDialog.FileName := FileName; OpenDialog.Filter := 'Драйвер (*.dll)|*.dll|'+ 'Компонент OCX (*.OCX)|*.OCX|Все файлы (*.*)|*.*'; OpenDialog.DefaultExt := 'dll'; OpenDialog.Options := [ofHideReadOnly, ofPathMustExist, ofFileMustExist]; if not OpenDialog.Execute then Abort; Result := RegisterDriverByFileName(OpenDialog.FileName, CLSID); finally OpenDialog.Free; end; end; function RegisterScale_DLL: IScale1C; begin repeat try Result := CreateComObject(Class_Scale45) as IScale1C; except RegisterDriver(Class_Scale45, STR_REG_DLL, STR_Scale1C_FILE); Result := nil end; until (Result <> nil); end; end.