Вверх ↑
Этот топик читают: Гость
Ответов: 5446
Рейтинг: 323
#1: 2008-09-23 08:02:04 ЛС | профиль | цитата
Ни для кого не секрет, что существующий механизм работы с дополнительных (ака "потусторонними" (с)) элементами в HiAsm-е не просто далёк от совершенства - практически отсутствует. Тема эта всплывала не раз, но воз и ныне там.

Для тех, кто не в курсе этой проблемы, поясняю: при любом обновлении среды - будь то через SVN или через установку новой версии поверх - теряются установленные дополнительные элементы. Точнее, теряется их регистрация в среде (сами файлы никуда не деваются).

Собственно, было предложено несколько решений проблемы:
Метод 1. Вручную переустанавливать нужные элементы перетаскиванием ini-файла в окно HiAsm-а
Метод 2. Создать единый his-файл, устанавливающий одним махом все нужные элементы
Метод 3а. Написать внешний менеджер установки файлов, который бы вызывался вместо hiasm при открытии his-файлов, копировал информацию об устанавливаемом элементе (элементах) и передавал His-файл дальше HiAsm-у
Метод 3б. Написать менеджер из 3а в виде плагина к HiAsm-у
Метод 4 (максимальный). Написать единую программу обновления HiAsm-а и компонентов, объединяющую возможности SVN и hiUpdate.

Вот про 4й метод я и хочу поговорить. Сейчас готов скелет программы, занимающейся автоматическим обновлением с SVN с сохранением регистрации дополнительных элементов. Идея проста: сравнивая sql-код имеющейся базы Elements.db с кодом, хранящимся на SVN, можно получить набор различий. Останется только отфильтровать их (при участии пользователя) и применить к существующей базе.

Так как программу я пишу не только для себя, а для всех, то хотелось бы привлечь форумчан к разработке и обсуждению. Я не буду здесь касаться вопроса получения sql-кодов (это уже изучено). Допустим, что исходные sql-файлы уже лежат в рабочей директории (напр. HiAsmElementsDelphi), и называются Elements.sql (копия с SVN) и el.sql (локальная база). Примерный алгоритм обработки этих файлов такой:

  • В каждом из файлов убрать строки вида INSERT INTO "sqlite_sequence"
  • Для всех строк, начинающихся с INSERT INTO, заменить "VALUES(число" на "VALUES(NULL"
  • Используя утилиту GNU diff, получить файл, содержащий изменения файлов друг относительно друга
  • (самый сложный этап) Используя диалог с пользователем, выбрать изменения, которые необходимо схранить (т.е., записи о дополнительных компонентах).
  • (муторный этап) Привести в порядок позиции элементов в пределах вкладок. Опция: в случае конфликта, приоритет имеют (штатные|дополнительные) элементы
  • Готовый файл сохранить и применить утилиту GNU patch для внесения изменений в файл el.sql
  • Исправленый el.sql превратить обратно в Elements.db

На первом этапе анализа проблемы я бы хотел увидеть наборски интерфейса для этапа отбора изменений. Позже вложу готовую часть GUI.
карма: 1

0
Ответов: 8928
Рейтинг: 823
#2: 2008-09-23 09:18:52 ЛС | профиль | цитата
iarspider, наученный горьким опытом именно в обсуждаемом механизме, я не обновляюсь с SVN, если там (на SVN) появляются нужные мне элементы, устанавливаю их ручками, кроме того не устанавливаю новую версию (Слава Dilma-е! ) "поверх", но всегда "рядом". Ранее (при Elements.ini) у меня даже была схемка по переносу любимых элементов в новоустановленную версию.
iarspider, если уж Вы занялись этой проблемой, поимейте ввиду и изложенную ситуацию
карма: 19

0
Ответов: 16884
Рейтинг: 1239
#3: 2008-09-23 10:16:06 ЛС | профиль | цитата
iarspider писал(а):
я бы хотел увидеть наборски интерфейса
Вот интерфейс того, что работает у меня.

------------ Дoбавленo:

Хотя панель прогресса - архитектурное излишество. Нужно убрать. Не столько новых добавляется, чтобы она медленно работала - использую в качестве светодиода - стала зеленой значит конец добавлений.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
файлы: 1obn.jpg [24.9KB] [328]
Администрация
Ответов: 15295
Рейтинг: 1519
#4: 2008-09-23 10:20:40 ЛС | профиль | цитата
iarspider, по моему проще всего перевести менеджер установки элементов среды на core элементы, а там уже менять все что угодно(в том числе сохранять информацию об установленных элементах где-то еще)
карма: 27
0
Ответов: 16884
Рейтинг: 1239
#5: 2008-09-23 10:22:00 ЛС | профиль | цитата
Да, iarspider, обрати внимание:
1. Если Elements.sql выложил nesco, то читается как нормальный набор строк
2. Усли выложил Dilma, то читается одной длинной строкой.





карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 1088
Рейтинг: 112
#6: 2008-09-23 10:31:47 ЛС | профиль | цитата
iarspider писал(а):
я бы хотел увидеть наборски интерфейса для этапа отбора изменений


#sha
Add(StringTableMT,13640562,259,245)
{
Width=392
Height=273
Align=5
Columns=#7:Name=90|11:Changes=500|
CheckBoxes=0
IconsCheck=[]
MiscIcons=[]
Icons=[]
StringsStrLst=#19:Название; изменения|
AutoTblStrLst=0
}
Add(ChildPanel,13645953,259,175)
{
}
BEGIN_SDK
Add(EditMulti,2376090,21,21)
{
}
Add(Panel,10531432,35,105)
{
Left=35
Top=105
Width=371
Height=22
Align=4
BorderWidth=0
BevelWidth=0
}
Add(CheckBox,7782757,35,161)
{
Width=150
Ctl3D=0
Caption="Приоритет стандартных"
}
Add(Button,457182,238,175)
{
Left=170
Width=75
Caption="Update"
}
END_SDK

карма: 0
Время верстки: %cr_time% Текущее время: %time%
0
6
Сообщение
...
Прикрепленные файлы
(файлы не залиты)