Как перейти с Delphi 2007 на XE2?

В настоящее время мы используем D2007, но рассматриваем возможность обновления до XE2. Здесь я могу подумать о двух «больших» проблемах - шаге Unicode с 2007 по 2009 год и обо всем, что касается платформы, от XE до XE2 (32/64 бит, VCL / Firemonkey с размерами указателей, пространством имен единиц и прочим).

Насколько мне известно, мы также получим D2009, D2010 и XE, если купим XE2, поэтому моя идея заключалась в том, чтобы выполнить обновление в два этапа:

  1. Сначала разберемся с Unicode. Думаю, лучший способ сделать это - перейти на XE: у нас будут рабочие дженерики и т. Д., Но никаких дополнительных проблем по сравнению с обновлением 2007-> 2009.

  2. Если шаг 1 выполнен и показал, что он работает для наших клиентов, выполните XE-> XE2.

Что вы думаете? Должны ли мы вместо этого выполнить все обновление за один шаг? Или два шага, но с другой промежуточной версией?

Изменить: Я знаю, что XE2 не заставляет нас переходить на кроссплатформенность (FireMonkey, вероятно, никогда не станет для нас вариантом). Я просто хочу избежать связанных проблем, таких как "Значения XE2 mrAll, mrNoToAll, mrYesToAll и mrClose ", борясь с любыми проблемами, связанными с Unicode. И расположение имен модулей звучит как серьезное препятствие, если мы должны были сделать наши устройства совместимыми как с D2007, так и с XE2 во время перехода (или это все равно плохая идея?).


person Uli Gerhardt    schedule 10.11.2011    source источник
comment
Я не могу удержаться от мысли, что @Nick Hodges сказал бы: «Поскольку вы защитили все в своем приложении с помощью автоматических тестов, ничего не может пойти не так, и вам следует сразу перейти к XE2».   -  person Heinrich Ulbricht    schedule 10.11.2011
comment
Это не описывает нашу ситуацию точно. :-)   -  person Uli Gerhardt    schedule 10.11.2011
comment
@HeinrichUlbricht Я совершенно уверен, что Ник никогда этого не скажет. То, что ваши модульные тесты проходят успешно, не означает, что программа работает. Как вы тестируете свои модульные тесты?   -  person David Heffernan    schedule 10.11.2011
comment
Пространство имен не проблема. Вы можете использовать псевдонимы, чтобы ваш старый код все еще работал. По умолчанию это будет устроено за вас. Вы должны выбрать свой яд. Да, вы можете столкнуться с ошибкой ModalResult, но как насчет ошибок, которые существуют в XE и исправлены в XE2?   -  person David Heffernan    schedule 10.11.2011
comment
@David: Я где-то читал, что использование псевдонимов пространств имен значительно замедляет компилятор. Есть ли у вас там опыт?   -  person Uli Gerhardt    schedule 10.11.2011
comment
@ Дэвид. Я не был так серьезен. Просто у меня сложилось определенное впечатление после его просмотра на T.   -  person Heinrich Ulbricht    schedule 10.11.2011
comment
@HeinrichUlbricht Это интересный момент. Я тоже слежу за Ником в Твиттере. На мой взгляд, он всегда упускает из виду то, что наличие модульных тестов бесполезно, если ваши тесты не годятся. Я думаю, что сообщение Ника, кажется, немного упрощает его, хотя, конечно, Twitter скорее ведет вас в этом направлении!   -  person David Heffernan    schedule 10.11.2011
comment
@Ulrich Я использую псевдоним пространства имен в моем недавно перенесенном проекте. Около 800kloc, скорость компиляции такая же, как и с D6 и D2010. До сих пор я был впечатлен XE2. Очевидно, есть проблемы с прорезыванием зубов, но меня это не волнует. В обновлении 2 исправлена ​​неприятная ошибка COM, с которой я столкнулся.   -  person David Heffernan    schedule 10.11.2011
comment
@David Хорошо иметь сторонников модульного тестирования, но иногда мне не нравится такое отношение. И в поддержку вашей точки зрения: geekandpoke.typepad.com/geekandpoke/2011/10/ ddt.html   -  person Heinrich Ulbricht    schedule 10.11.2011


Ответы (1)


Я бы сразу перешел на XE2. Тот факт, что он поддерживает 64-разрядные версии и FireMonkey, не означает, что вам нужно сразу их использовать. Просто сначала напишите 32-битный код и обновите Unicode по мере необходимости, но помните о 64-битной системе при работе с указателями, использованием памяти и т. Д., Чтобы свести к минимуму необходимость будущих миграций, когда вы будете готовы заняться 64-битной версией. Даже не беспокойтесь о FireMonkey, поскольку это совершенно новый фреймворк, так что вам все равно придется начинать с нуля, когда вы совершите этот прыжок.

person Remy Lebeau    schedule 10.11.2011
comment
+1 Я это секундант. Перейдите прямо к XE2, но сначала займитесь только портом Unicode. Придерживайтесь VCL и 32-битной версии. Меняйте по одной вещи за раз. Единственное возможное беспокойство заключается в том, что сторонние поставщики могут не иметь полной поддержки XE2 к настоящему времени, но я думаю, что они в основном уже есть. - person David Heffernan; 10.11.2011
comment
Спасибо вам обоим. Я отредактировал свой пост (надеюсь :-)), чтобы прояснить мои опасения. - person Uli Gerhardt; 10.11.2011