Latest post of the previous page:
А зачем там вообще ID? Индекса что-ли не хватает?Как удалить запись из истории команд?
Re: Как удалить запись из истории команд?
Какой индекс вы имеете в виду?Max Rusov wrote:А зачем там вообще ID? Индекса что-ли не хватает?
Насколько я понимаю, записи (однозначно) можно удалить только по ключу, коим является ID.
Можно этот ID возвращать как часть Data (например, отделив его ";"). Я понимаю, что все это криво, но что же делать, если надо сохранить бинарную совместимость?!
Re: Как удалить запись из истории команд?
Не могли бы объяснить, почему? Меня, как я понял, попросили назвать пример проекта, в котором менялся АПИ плагинов, и я выполнил просьбу. Или что-то не так?2useven10 wrote:это не пример, это заявка на бан.fml2 wrote:Например, Far
- zg
- zero-gravity
- Posts: 6035
- Joined: Tue 15 Mar, 2005 17:36
- Location: riga
- Been thanked: 185 times
- Contact:
Re: Как удалить запись из истории команд?
нет, вопрос был: когда в фаре ломалась бинарная совместимость после того, как было объявлено что, она ломаться не будет?
Re: Как удалить запись из истории команд?
Так так бы и писали. А то слишком много приходится додумывать.zg wrote:нет, вопрос был: когда в фаре ломалась бинарная совместимость после того, как было объявлено что, она ломаться не будет?
По существу вопроса (хотя это и не по существу ветки): я не утверждал, что в Фаре ломалась совместимость после того, как было объявлено, что она ломаться не будет. Я сказал, что в проектах иногда ломается совместимость, хотя это и всегда нежелательно. Но ведь это всегда делается не просто так, а потому что есть какая-то потребность.
А что, было объявлено, что нынешнее состояние АПИ -- это до скончания времен? Или только для Фар 3? Или для чего? Просто если это до скончания времен, то не слишком ли Фар сам себя ограничил?
У вас есть какие-нибудь ответы на мои ранее заданные вопросы?
- zg
- zero-gravity
- Posts: 6035
- Joined: Tue 15 Mar, 2005 17:36
- Location: riga
- Been thanked: 185 times
- Contact:
Re: Как удалить запись из истории команд?
нет. нет.fml2 wrote:А что, было объявлено, что нынешнее состояние АПИ -- это до скончания времен? Или только для Фар 3?
-
- Posts: 3651
- Joined: Wed 23 Nov, 2005 11:11
- Location: Москва-Питер
- Has thanked: 2 times
- Been thanked: 19 times
Re: Как удалить запись из истории команд?
Вроде очевидно - API может развиваться сохраняя бинарную совместимость снизу вверх. Если надо добавить поля в структуру, то поля добавляются в конец структуры, а по полю StructSize определяется заполнены ли они, и т.п.fml2 wrote:А что, было объявлено, что нынешнее состояние АПИ -- это до скончания времен? Или только для Фар 3? Или для чего? Просто если это до скончания времен, то не слишком ли Фар сам себя ограничил?
Re: Как удалить запись из истории команд?
Я так и сделал (добавил поле "Id" в конец структуры "FarSettingsHistory")Max Rusov wrote:Если надо добавить поля в структуру, то поля добавляются в конец структуры
Но в этой структуре нет поля "StructSize".Max Rusov wrote:а по полю StructSize определяется заполнены ли они
Насколько я понимаю, единственным местом, в котором АПИ из-за добавления этого поля может "сломаться", является функция для перечисления опций (plugapi.cpp, функция "apiSettingsControl", ветка "SCTL_ENUM"). Но там уже стоит какая-то проверка "CheckStructSize". Это не является гарантией совместимости АПИ "снизу вверх"?
Тут один участник форума (zg) утверждал, что добавление поля ломает АПИ. Но так и не сказал, почему.
А вы понимаете, почему? И как сделать, чтобы он все же остался совместимым?
И еще: вы тут ранее упомянули какой-то индекс, по которому можно было бы удалять записи из истории. Вы не могли бы подробнее объяснить, что вы имели в виду?
-
- Posts: 6836
- Joined: Thu 23 Mar, 2006 21:36
- Location: Israel
- Has thanked: 41 times
- Been thanked: 530 times
Re: Как удалить запись из истории команд?
Возьмите Far с вашим патчем, а LuaFAR - без оного, и попробуйте получить список историй. Вы увидите, что это перестало работать. LuaFAR без вашего патча + LuaMacro - это пример плагина, который не будет работать из-за поломанной совместимости.fml2 wrote:Тут один участник форума (zg) утверждал, что добавление поля ломает АПИ. Но так и не сказал, почему.
Хорошо, LuaFAR вы подправили, а как быть с остальными плагинами?
Re: Как удалить запись из истории команд?
В то, что он ломает, я верю. Но не очень понимаю, почему (ведь есть проверка на размер). И еще меньше понимаю, как сделать, чтобы не ломал (Max Rusov говорит, что это возможно -- как я понял, просто соблюдая некие "правила гигиены").
-
- Posts: 6836
- Joined: Thu 23 Mar, 2006 21:36
- Location: Israel
- Has thanked: 41 times
- Been thanked: 530 times
Re: Как удалить запись из истории команд?
Я несколько неточно выразился: LuaFAR нужно взять, скомпилированный с plugin.hpp, к которому не применялся ваш патч.
Я мог бы объяснить, но раз вы берётесь модифицировать Фар, то должны уметь докапываться сами, тем более, что это на поверхности.fml2 wrote:В то, что он ломает, я верю. Но не очень понимаю, почему (ведь есть проверка на размер).
-
- Posts: 3651
- Joined: Wed 23 Nov, 2005 11:11
- Location: Москва-Питер
- Has thanked: 2 times
- Been thanked: 19 times
Re: Как удалить запись из истории команд?
Если есть Count то то идентифицировать элемент можно по индексу, использование какого-то ID - мне непонятно зачем. Но в исходники я не лез, поэтому что-то более конкретное не скажу.fml2 wrote:И еще: вы тут ранее упомянули какой-то индекс, по которому можно было бы удалять записи из истории. Вы не могли бы подробнее объяснить, что вы имели в виду?
-
- Posts: 6836
- Joined: Thu 23 Mar, 2006 21:36
- Location: Israel
- Has thanked: 41 times
- Been thanked: 530 times
Re: Как удалить запись из истории команд?
Ладно, не буду занудой:Shmuel wrote:Я мог бы объяснить, но раз вы берётесь модифицировать Фар, то должны уметь докапываться сами, тем более, что это на поверхности.
- в структуре FarSettingsEnum, есть указатель на массив
const struct FarSettingsHistory* Histories
.- размер структуры FarSettingsHistory в Фаре увеличился после вашего патча, но старые плагины этого не знают (они скомпилированы со старым plugin.hpp) и при итерации по массиву Histories будет применяться прежний размер данной структуры, что, естественно, приведёт к неработоспособности, а скорее всего и к падению.