BinGen
Quote:Ага, киллэмолльно.
Аки Маяковски )
Quote:Вроде новая ЭРА пишется на Паскале, как и прежняя? Если да, и исходники будут иметь ту же форму - более или менее ОК. А иначе...
Вот тут-то и нет. Я ближе к лету закончил первую версию своей полторагодней работы, в ходе которой я уже давно перешёл на Delphi и наработал свою систему модулей с довольно богатыми возможностями. Именно поэтому я так налево и направо использую списки, ассоциативные массивы, генерацию строк по шаблонам...Код гораздо более высокого уровня (да и стиль у меня ужесточился с момента релиза 1.5).
Однако при попытке сделать среднее из 1.8 и 2.0 с целью сохранить совместимость, я пришёл ко многим трудностям переноса кода из Virtual Pascal, поэтому отдельно поправил Эру 1.8, а новую библиотеку включил полностью вторым файлом.
Если хочешь, пока ещё есть время до релиза, можем объединить усилия по наведению совместимости:
1) Если у тебя есть лучший вариант, напиши, я исправлю.
2) Добавлю.
3) Нужен этот свой триггер.
4) Тут папка старая, ибо совместимость, а Angel.dll и Era.dll должны находиться в корне.
5) Вспоминай.
Касаемо исполняемого файла, то нужен 1 жёстко прошитый патч (загрузка Era.dll), а всё остальное через динамические заплатки или как там тебе удобнее.
Естественно, перенос имеет ещё несколько тонкостей. Например, новые события должны вызывать SaveEventParams ... RestoreEventParams вокруг генерации ЕРМ триггера, чтобы тот имел свою копию параметров !!SN:X (все события Angel.dll - Era.dll так и поступают теперь). Это значит, что вызов триггера из триггера безопасен.
Что ещё я вчера наметил, после очередного бага, связанного с событием от клавиатуры, так это сохранение y-переменных для всех событий вога, а не только для функций, вызванных через FU:P/DO:P. Потому что предполагается, что y-переменные другие события испортить не могут, а они уверенно их портят.
Quote:что-то я не понял что такое ToleranceDist
Расстояние терпимости:
abxd => 12x4.
По идее, "x" не поменялась, а значит не должна быть включена в патч:
[12]x[4], но скорее всего она просто случайно совпала с оригиналом или ты не хочешь плодить кучу мини-патчей с большим размером из-за накладных данных, поэтому ты говоришь, что расстояние в 1 символ между двумя изменениями терпимо и его тоже нужно записать в изменения. В итоге патч будет включать весь блок: [12x4]. Значение по умолчанию - 7 - наиболее эффективно с точки зрения экономии места в файле. Ведь каждый мини-патч съедает ещё 8 байт на адрес и размер.