Какие-либо подсказки для тех, которые хотят обновить от Delphi 7 (и вниз) к Delphi 2010?

После обновления 4 и 5 мне интересно переоценивать Delphi 2010. На этот раз я намереваюсь портировать часть своего кода (мелкий масштаб), чтобы видеть, как трудный должен сделать это в крупном масштабе.

Основной вопрос, кажется, ASCII к unicode преобразованию. Какие-либо подсказки или ресурсы об этом, что Вы нашли полезными?

Большое спасибо.


Править:

В этой точке моя рекомендация для других людей (которые хотят обновить) была бы:

http://www.embarcadero.com/images/dm/technical-papers/delphi-in-a-unicode-world-updated.pdf

WideString, идентичный для Строкового представления в Delphi 2009

Какова версия компилятора для Delphi 2010?

http://chee-yang.blogspot.com/2008/10/delphi-2009-unicode.html

Обратите внимание что Gif (Melander) и Png (Martijn Saly?) изображения теперь включены в Delphi 2010. Необходимо будет использовать условное выражение для использования правильной единицы GIF:

USES Windows, SysUtils, Graphics, blabla
{$IFDEF VER150}
  , GIFImage,     {Delphi 7}
{$ELSE}  
  GIFImg          {Delphi 2010}
{$ENDIF}; 

Также необходимо "зафиксировать" PNG, обеспеченный Причалом: http://talkdelphi.blogspot.com/2009_03_01_archive.html

Другие вещи, которые необходимо знать, состоят в том, что действительно необходимо скопировать проект прежде, чем открыть его в Delphi 2010. 2010 Delphi изменит Ваш файл DFM, даже если Вы не нажмете кнопку Save. Форма потеряет данные, и это не скомпилирует в D7.


ОБНОВЛЕНИЕ

Я наконец обновил. Delphi XE имеет некоторые новые возможности. К сожалению, совсем немногие из них не работают вообще (фоновая компиляция, моделирование UML, кодируйте понимание, например), другие были понижены (справка и например). IDE также не так стабилен и быстр как Delphi 7, и панель инструментов имеет настоящие проблемы (лучше не настраивают IDE). Существует также противная ошибка, где IDE имеет 100%-ю загрузку ЦП (см. мои другие сообщения обо всех этих проблемах). Я надеюсь, что в Обновлении 2 и 3 они устранят некоторые самые строгие проблемы.

Так или иначе я думаю, что обновил слишком скоро, потому что теперь Embarcadero объявил о компиляторе на 64 бита так, вероятно, я должен буду заплатить снова много денег для обновления до следующей версии Delphi для получения того компилятора. Для тех, которые все еще думают для обновления до Delphi XE, который я рекомендовал бы испытать Delphi XE прежде, чем купить его, чтобы видеть, предлагает ли он действительно некоторые функции, которые не доступны иначе.

Заключение:

  • XE Delphi приносит много новых возможностей, но очевидно Вы не будете использовать Всех их.
  • Устойчивость IDE не лучше.
  • Это помогает Вам создать более актуальные приложения (современный UI открываются/сохраняют диалоговое окно, декларацию приложения).
  • Поддержка unicode.

17
задан WeGoToMars 14 May 2019 в 12:28
поделиться

6 ответов

Мы создали веб-страницу специально для этого выпуска:

http: //www.embarcadero.com / rad-in-action / migration-upgrade-center

Здесь вы можете найти веб-страницы, документы, повторы веб-семинаров и т. д., которые охватывают проблему миграции.

Первое, что люди говорят: «У меня огромная кодовая база, и переход на Unicode займет вечность», и почти без исключения они обнаруживают, что «навсегда» на самом деле гораздо более короткий период времени, чем они думали изначально, и что новый Благодаря особенностям Delphi 2010 оно того стоит.

12
ответ дан 30 November 2019 в 12:57
поделиться

Самые большие проблемы связаны со сторонними библиотеками и VCL. Если они не на D2010, это может быть болезненно. Проблема Unicode возникает, если вы выполняете вычисления с длиной строк или массивов PChar, предполагая, что один байт на символ. Обычно вы можете обходиться без обработки всего как с AnsiString / AnsiChar в старом стиле. Но тогда вы не получите преимуществ Unicode. Если у вас нет ничего, что было бы сложно сделать в Unicode, просто делайте все в Unicode, и вы будете намного впереди, чем если бы вам пришлось беспокоиться о переключении туда и обратно.

5
ответ дан 30 November 2019 в 12:57
поделиться

Преобразование кода в Unicode само по себе не занимает много времени, если вы не сделали ничего "смешного" со своими строками. Я преобразовал около 1 млн строк кода + база данных менее чем за 2 недели. Ребята из codegear очень хорошо поработали, сделав это намного проще.

Ваш код может быть перекомпилирован в D2010 без каких-либо изменений (но с большим количеством подсказок / предупреждений).

Самая большая проблема при преобразовании возникает из-за некорректных вызовов API Windows. Например, функция GetComputerName, которая запрашивает размер буфера в TChars (как указано в API). В Ansi TChar = 1 байт, поэтому Length = SizeOf. В Юникоде это уже не так. Хуже того, вызов API может не завершиться неудачей. Он просто перезапишет некоторую действительную часть памяти и выйдет из строя намного позже.

О ... А еще есть небольшие различия между Ansi и Unicode в Windows API. Например, lpCommandLine CreateProcess доступен только для чтения в версии Ansi, но для чтения / записи в версии Unicode. Таким образом, использование константы в качестве параметра отлично работает в Ansi, но приведет к сбою в Kernel32.dll в Unicode.

В целом, это во многом зависит от качества кода, с которым вы работаете. Плохой код может быть очень сложно перенести на D2010. Хороший код должен быть довольно простым.

и прочтите ресурсы, на которые ссылается Ник Ходжес, они очень полезны.

4
ответ дан 30 November 2019 в 12:57
поделиться

Мы перешли с Delphi 7 на Delphi 2007, 2009 и теперь 2010! Ниже перечислены самые большие проблемы, которые мы обнаружили.

  • Потоки изменились, а функции Resume и Suspend устарели.
  • Unicode
  • Структура проектов изменилась и не является обратно совместимой
  • Структура dfms изменилась и не является обратно совместимой

Надеюсь, это поможет.

2
ответ дан 30 November 2019 в 12:57
поделиться

Что касается проблем с преобразованием Unicode, лучший способ увидеть проблемы, с которыми люди столкнулись, и что сделали другие, - это получить White Paper Кэри Дженсона: Delphi Unicode Migration for Mere Mortals .

Также я настоятельно рекомендую Marco Cantu «Справочник по Delphi 2009» , в котором описаны все изменения в выпуске Major 2009, который включает Unicode, Generics и многое другое. Большая часть его материала по Unicode из этой книги содержится в его Белой книге: Delphi и Unicode .

3
ответ дан 30 November 2019 в 12:57
поделиться

Я согласен с Крисом - самой большой проблемой при переносе нашего кода на 2010 год было обеспечение работы всех библиотек сторонних производителей. Некоторые из них нуждались в незначительных правках исходного текста, и их приходилось устанавливать из измененного исходного текста. Тем не менее, это заняло не более одного дня или около того.

Единственная другая проблема, с которой мы столкнулись при переходе на 2010, была связана с небольшим участком кода, который стал глючить из-за изменений в работе ProcessMessages в 2010. Это был старый кусок кода, который, вероятно, не стоило писать так, как он был написан изначально (ProcessMessages и Sleep() внутри цикла ожидания изменения переменной OPC). Он работал в 2007 году, но в 2010 году он каким-то образом пожирал системные сообщения и блокировал OPC-сервер. Для нас это было небольшим исправлением, но, как сказал Кен, это, вероятно, зависит от качества кода, который вы переносите. 2010 кажется немного менее терпимым к плохой практике и уродливым хакам.

1
ответ дан 30 November 2019 в 12:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: