Мне нужно заменить большое количество компонентов Delphi, определенных в одном пакете, на аналогичные компоненты в другом пакете. Большую часть рутинной работы можно выполнить, заменив текст (типы и свойства компонентов) в файлах DFM — разумеется, сохранив их как текст.
Я провел поиск в Stackoverflow и Google и сейчас адаптирую парсер Felix Colibri DFM из http://www.felix-colibri.com/papers/colibri_utilities/dfm_parser/dfm_parser.html
Я наткнулся на 'функция' в файлах DFM, которую синтаксический анализатор подавляет: [число] с после спецификации типа, например:
inherited DialoogEditAgenda: TDialoogEditAgenda
ActiveControl = PlanCalendar
Caption = 'Agenda'
[snip]
inherited PanelButtons: TRzPanel
Top = 537
[snip]
inherited ButtonCancel: TRzBitBtn [0] <== *here*
Left = 852
[snip]
end
object CheckBoxBeschikbaarheid: TRzCheckBox [1] <== *here*
Left = 8
[snip]
end
inherited ButtonOK: TRzBitBtn [2] <== *here*
Left = 900
[snip]
end
end
inherited PageControl: TRzPageControl
Left = 444
[snip]
end
object PanelBeschikbaarheid: TRzSizePanel [2] <== *here*
Left = 967
[snip]
end
object PanelScheduler: TRzPanel [3] <== *here*
Left = 23
Top = 22
[...]
Многие из этих DFM в значительной степени унаследованы (мне уже пришлось адаптировать код Colibri для этого), но небольшой тест приложение с наследованием не смогло создать [число] в DFM.
Мой вопрос перед расширением кода анализатора: кто-нибудь знает, откуда берутся эти [числа] и, следовательно, могу ли я удалить их перед разбором файлов DFM?
Спасибо
Jan