Такая миграция должна быть очень вероятной, и в зависимости от того, как написан ваш код, она может быть болезненной или безболезненной. К сожалению, это нелегко сказать, пока вы не начнете процесс миграции.
Первое, что я хотел бы сделать, - убедиться, что ВСЕ файлы DFM преобразованы в их текстовое представление. Я полагаю, это было установлено по умолчанию в более поздних версиях Delphi, но, насколько я помню, Delphi 3 использовал двоичный формат. Там должен быть служебный файл с именем DFMConvert или что-то в каталоге bin Delphi 3, который позволяет конвертировать DFM в текст. Причина, по которой вы захотите это сделать, заключается в том, чтобы убедиться, что вы можете прочитать исходный код, если вам нужно выполнить ручное редактирование DFM из-за не загружаемого компонента. Вы не только перепрыгиваете версии Delphi, но вы также перепрыгиваете версии КАЖДОГО компонента, который вы используете, и может быть несколько несовместимостей, которые могут привести к сбою загрузки компонента. Я обнаружил, что если это так, и у вас есть «новая» версия, то используйте непосредственное редактирование источника DFM и сравните тестовую форму с компонентом на ней, с тем, что содержится в вашей старой версии. Удалите все (или переименуйте), которое неуместно, и затем попытайтесь загрузить форму снова.
Как уже упоминал Фрабрицио, если вы используете варианты, то вам нужно будет внести незначительные изменения в ваше предложение использования.
Хорошая новость заключается в том, что сам ваш код должен работать нормально, как только вы исправите предложение компонентов / использования. Если вы перейдете непосредственно к Delphi 2010, вашей единственной другой проблемой будет Unicode, и компилятор проделает фантастическую работу, сообщая вам все эти ошибки и предупреждения.