после успешной инсталляции, начинаем компилировать
Теперь, после успешной инсталляции, начинаем компилировать все доступные проекты, использующие RxLib. У нас остались только ошибки RunTime, но они могут проявится лишь в тех случаях, когда: (даже не знаем, когда - одному богу известно!). Однако, по переписке с другими людьми, так же имевшими опыт подобной адаптации, мы узнали, что ряд мест в библиотеке работает неправильно в Delphi5. Вы можете сразу натолкнуться на них, а можете не встретиться с ними никогда (а это достаточно долго). Так, метод класса TownerDrawComboBox (модуль RxCombos.pas), предка T{Color|Font}ComboBox'ов, содержал вызов процедуры ResetItemHeight, которая, содержит строку "inherited ItemHeight := H;", вызывающую зацикливание в D5 и, как следствие, переполнение стека.
Эту строку следует удалить, тем более что и без нее все прекрасно работает.
Таким образом, для устранения таких неприятностей, как невозможность откомпилировать что-то в новой версии компилятора нами были использованы следующие методы:
- Контекстный поиск строки в файлах *.pas, *.inc, *.dcu, *.bpl, *.*. Этот поиск нужно использовать с "головой". То есть, на этом можно потерять достаточно много времени, если задать слишком широкую область поиска или слишком общую маску.
- Магическую комбинацию ctrl+shift+пробел. Очень ценное введение, появившееся еще в Delphi4. Мы используем его всегда и во всех разработках.
- Принцип разумной достаточности. Не нужно чего-то придумывать, если простое приведение типа является достаточным. Если мы не знаем на что что-то заменить, но знаем что это что-то должно делать, ищем что-нибудь другое, что делает то-же самое.
- Принцип аналогии. Если что-то делается, это должно делаться однообразно. Кстати, хороший стиль программирования основывается на однообразии методов, описаний, способа кодирования и т.д. Человек, который сначала пишет CloseWindowEx, потом closewindowex, а потом CloseWindowSex, при этом постоянно меняя ширину отступов и т.п - не имеет хорошего стиля программирования, потому что не имеет стиля вообще. Но это - тема отдельной статьи:
- Пошаговая компиляция с архивированием исходных модулей.