Мне нужно изменить большое количество компонентов Delphi, определенных в одном пакете, на аналогичные в другом пакете. Большую часть работы grunt можно выполнить, заменив текст (типы компонентов и свойства) в файлах 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 сильно унаследованы (мне пришлось адаптировать код Колибри для этого уже), но небольшое тестовое приложение с наследованием не смогло получить [число] в DFM.
Мой вопрос, прежде чем расширять код парсера: кто-нибудь знает, откуда взялись эти [число], и, возможно, я могу удалить их перед разбором файлов DFM?
Спасибо
Jan