Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.08.2013, 15:08   #11
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

Поскольку речь в теме идет о драйверах, работающих с железом, в частности с FTDI, то перезапуск желателен. Эти конверторы не всегда корректно подхватываются.
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 13.08.2013, 15:09   #12
Daemvil
Пользователь
 
Регистрация: 23.12.2009
Сообщений: 56
По умолчанию

Цитата:
Сообщение от raxp Посмотреть сообщение
Поскольку речь в теме идет о драйверах, работающих с железом, в частности с FTDI, то перезапуск желателен.
драйвера FTDI (в частности для FT2232H) после настройки и переустановки отлично работают с новыми настройками. Перезапуск компьютера не нужен. Проверено
Nostra Sunt
Daemvil вне форума Ответить с цитированием
Старый 15.08.2013, 17:33   #13
Vapaamies
Ваш К. О.
Участник клуба
 
Аватар для Vapaamies
 
Регистрация: 26.12.2012
Сообщений: 1,777
По умолчанию

Цитата:
Сообщение от Daemvil Посмотреть сообщение
У меня Win7 64bit, а Дельфи компилит 32-разрядные приложения.
Последние версии Delphi умеют и x64. Если нет денег на обновление, можно попробовать FPC -- он даже раньше Delphi с x64 подружился.

Цитата:
Сообщение от Daemvil Посмотреть сообщение
И вообще не понятно, почему именно с драйверами не выходит такая процедура..
Потому что драйвера внезапно взаимодействуют с ядром, имеющим только один интерфейс. SysWOW64 -- чисто прикладная нашлепка. Поэтому требование одной битности от ядра и драйверов вполне нормально.
Vapaamies вне форума Ответить с цитированием
Старый 16.08.2013, 12:03   #14
Daemvil
Пользователь
 
Регистрация: 23.12.2009
Сообщений: 56
По умолчанию

Уже года 3 перехожу на Лазарус(пока не позволяет на него нормально перейти время и недостаточная стабильность Лазаруса)Да прикипел я к D7, и переносить весь проект на Лазарус займет очень много времени, еще работает он медленней, и .exe получаются громоздкими... Можно, конечно, сделать прослойку на FPC для D7, но она, думаю, будет опять таки в виде отдельного приложения, запускаемого с параметрами, как rundll32. Вообще, если есть желающие помочь перенести проект на лазарус - добро пожаловать ))) Проект специфический, но интересный.
Nostra Sunt
Daemvil вне форума Ответить с цитированием
Старый 01.08.2016, 15:17   #15
vwart
Новичок
Джуниор
 
Регистрация: 01.08.2016
Сообщений: 1
По умолчанию

Цитата:
Сообщение от Daemvil Посмотреть сообщение
Как говорится, "все болит, ничего не помогает".... Все перечисленные способы, приведенные здесь, дают просто тупой молчок системы. Все отрабатывает, но никаких сообщений никто не выдает, а изменения в драйверах не происходят. Пробую посредством функций типа SetupDi - выдает "Range Check"
Код:
function TForm1.InstallDriver(InfFile: String):boolean;
var
  ClassGUID: TGUID;
  ClassName: array [0..MAX_CLASS_NAME_LEN - 1] of Char;
  DeviceInfoSet: HWND;
  DeviceInfoData: SP_DEVINFO_DATA;
  HardwareId: array [0..HARDID_BUF_SIZE-1] of Char;
  Reboot: BOOL;
begin
  if not SetupDiGetINFClass(PChar(InfFile), @ClassGUID, @ClassName, MAX_CLASS_NAME_LEN, NIL) then
  begin
    ShowMessage(SysErrorMessage(GetLastError));
    Exit;
  end;
  DeviceInfoSet:= SetupDiCreateDeviceInfoList(@ClassGUID, Handle);
  if (DeviceInfoSet = INVALID_HANDLE_VALUE) then
  begin
    ShowMessage(SysErrorMessage(GetLastError));
    Exit;
  end;
  DeviceInfoData.cbSize:= sizeof(SP_DEVINFO_DATA);
  if not SetupDiCreateDeviceInfo(DeviceInfoSet, @ClassName, @ClassGUID, nil, Handle, DICD_GENERATE_ID, @DeviceInfoData) then
  begin
    ShowMessage(SysErrorMessage(GetLastError));
    Exit;
  end;
  FillChar(HardwareId, HARDID_BUF_SIZE, 0);
  if not SetupDiSetDeviceRegistryPropertyA(DeviceInfoSet, @DeviceInfoData, SPDRP_HARDWAREID, @HardwareId, HARDID_BUF_SIZE) then
  begin
    ShowMessage(SysErrorMessage(GetLastError));
    Exit;
  end;
  if not SetupDiCallClassInstaller(DIF_REGISTERDEVICE, DeviceInfoSet, @DeviceInfoData) then
  begin
    ShowMessage(SysErrorMessage(GetLastError));  вот здесь getlasterror возвращает ошибку "Range Check"
    Exit;
  end;
  Reboot:= False;
  if not UpdateDriverForPlugAndPlayDevices(Handle, @HardwareId, PChar(InfFile), INSTALLFLAG_FORCE, @Reboot) then
  begin
    ShowMessage(SysErrorMessage(GetLastError));
    Exit;
  end;
  ShowMessage('');
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  InstallDriver(ExtractFilePath(Application.ExeName)+'ftdiport.inf');

end;
Получилось разобраться? Нужна помощь по этому вопросу.
vwart вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как установить настраиваемые поля программно в MS Office Word? Slap Microsoft Office Word 1 10.12.2012 00:35
Как программно определить установлен ли драйвер. avd Общие вопросы Delphi 3 07.09.2012 13:11
Как программно установить службу в windows? KiL0z Общие вопросы Delphi 2 10.05.2011 02:29
Как установить драйвер (имеется только sys файл)? Stilet Компьютерное железо 7 05.08.2009 17:48