Цитата Сообщение от Oleg_BS Посмотреть сообщение
Саша, потестировал я тут самую малость 1.0.0.56 и нашел пару небольших багов:
1) config.ini пишется в тот же подкаталог, куда сохраняется последний профиль. Соответственно, если профиль лежит не в каталоге с ехе-шником, то при запуске config.ini не находится и последний профиль не подгружается, приходится выбирать ручками через меню.
Поправил - теперь config.ini ищется (и пишется) исключительно в каталог с программой.

2) При открытии профайла не обновляется экран программы. Т.е. назначенные в открытом профайле комбинации никак на интерфейсе не видны (показывается содержимое предыдущего профиля). Приходится через меню, ручками делать рефреш. Сделай плиз автоматический вызов функции рефреша сразу после выбора нового профайла.
Все сделано, раньше подгрузка была некорректно реализована.
Воистину, старые хвосты - это как камень на шею. Вон USSR_Rik вчера мне много чего успел по поводу багов выдать.

Цитата Сообщение от Oleg_BS Посмотреть сообщение
Ну и маленькое пожелание по косметике. Хотелось бы внизу окна иметь строку статуса, на которую выводить имя профиля. (как вариант, чтобы не перекраивать интерфейс, выводить имя файла профиля в заголовок окна, сразу после названия, так наверное даже лучше).
Вообще-то вывод в заголовок пути и имени профиля еще в 1.0.0.50 был сделан. См. скриншот из программы от USSR_Rik
http://forum.lockon.ru/attachment.ph...0&d=1171813345
В заголовке окна явственно видна надпись "SV Mapper - D:\1C\SVMapper\LO_FC.svm"
У меня тоже надпись подобная выводится. С поправкой на то, что путь другой к профилю. Может быть, как-то подробней можно описать возникающую ситуацию с невыводом в заголовок имени профиля?

Цитата Сообщение от Oleg_BS Посмотреть сообщение
Зачем? Да просто если использовать чужой профиль, то GUID и имя джоя придется менять только в ОДНОМ месте профиля, а не глобальным поиском по всему файлу. Да и читабельность (ИМХО) на порядок лучше. Размер файла опять таки уменьшится.
Пока что мне удобней именовать секции в формате [{ProdGUID},{InstanceGUID},ProductName<\subsection>]
То, что так в одном месте менять придется - это я обдумывал, но пока что так сделать было легче.
А так - я просто невооруженным взглядом вижу навязчивую мысль сделать именно так, чтобы номера джойстиков фигурировали в профиле

Также могу отметить, что автоматическую замену с Replace All вроде бы никто не отменял, разве нет? С данной функцией при редактировании профиля не составит разницы - в одном месте поправить или в пяти десятках.
Вообще редактирование профиля вручную, согласись, это работа опциональная, разовая, не требующая каждодневных усилий на этой почве.
Отмечу также, что задачи разработки удобного для ручного редактирования формата файла и просто формата файла для сохранения конкретных данных несколько различны по своей постановке.
Не вдаваясь в подробности - проще отдать указатель на структуру в памяти и сказать, сколько байт писать в файл, начиная с этого места, и потом в обратную сторону - аналогично - читаем в память с такого-то места из файла, начиная с такой-то позиции столько-то байт. А синтаксический разбор значений, с попутной проверкой, есть ли они вообще файле или отсутствуют напрочь - уже совсем другое дело.
Что проще реализовать? Конечно, первый вариант.

О размере файла... Конечно, кощунственно прозвучит, но в эру гигабайтных винчестеров, разница - 5 кб или 30 кб не видна. И то и другое займет ничтожную величину от общего дискового объема.
Можно, конечно, говорить о программистском заговоре - они навязчиво заставляют покупать винты чудовищных объемов, хотя можно обойтись и меньшим
В конечном счете размер файла при указанных характерных объемах - совсем не решающий аргумент в пользу выбора формата именования секций.

Цитата Сообщение от Oleg_BS Посмотреть сообщение
Для этого конечно надо доработать маппер, чтобы ему в параметрах коммандной строки (при запуске) можно было передавать путь к файлу профиля.
Конечно, было бы удобней

Цитата Сообщение от Aim
Потестил я тоже эту прогу, кроме багов в интерфейсе, заметил невозможность замапить клавишу Del. Вместо ее мапится NumDel.
Стало быть, клавиатурный контроллер конкретно твоей клавиатуры выдает скан-код NumDel в ответ на нажатие. Сканд-код клавиши Delete в десятичной системе счисления равен 211.
Из DX SDK: DIK_DELETE = 0xD3.
Соответствующая этому коду строковая константа в программе - просто 'Del'.
Соответственно, как получается NumDel - я не в курсе.
Если это слово прописывает непосредственно та игра, для которой мапятся кнопки после нажатия кнопки джойстика при включенном маппере, стало быть игра обрабатывает поток ввода с клавиатуры несколько иначе - возможно, используя манипуляции с MapVirtualKey(..,..)
Проверь, какой скан-код кнопки мапится в SV Mapper'е, посмотрев в ini-файл профиля.
Должно быть OnDown = 211.
-
По итогам - перевесил 1.0.0.57 с небольшой кучкой исправлений по пунктам сообщений Oleg_BS.