Миграция старого кода Delphi 7 в Delphi XE - действительно ли нужен юникод? - PullRequest
4 голосов
/ 25 октября 2011

У меня есть старое приложение, работающее под BDE под Delphi 7, и теперь я купил Delphi XE. Я вижу, что многие люди говорят, что основная проблема при переносе кода - переход на юникод. И, возможно, база данных, поддерживающая Unicode.

Но действительно ли я должен это делать? Могу ли я не просто придерживаться BDE и какого-нибудь «старого доброго формата строки»?

Я надеюсь, что здесь вам удастся быстро переключиться на Delphi Xe, не обязательно используя все новые функции и т. Д. И т. Д. ...

Rgds PM

Ответы [ 4 ]

6 голосов
/ 25 октября 2011

Поля данных, которые связывают ваши данные с базой данных, не изменились.TStringField по-прежнему имеет свойство Value типа AnsiString, которое соответствует старому поведению.

Когда вы проверяете все предупреждения, которые выдает компилятор, вы можете без особых усилий уйти и сохранить BDE живым.

Кроме того, я предлагаю заменить BDE на более свежее решение в обозримом будущем - не только из-за Unicode.

5 голосов
/ 25 октября 2011

Довольно сложно избежать использования нового UnicodeString, к которому теперь добавлен string. Вы можете написать весь свой код с помощью AnsiString, если хотите, но зачем? Как только вы используете любую нетривиальную библиотеку (например, RTL, VCL, стороннюю), вы плывете против течения. Если вы попытаетесь продолжить с AnsiString, на мой взгляд, вы на самом деле усложните себе жизнь.

Если вы попробуете это, то обнаружите, что переход к новому типу строки Unicode не так уж и сложен. Подавляющее большинство существующего кода будет работать без изменений.

0 голосов
/ 16 ноября 2011

У нас также есть много приложений, использующих BDE с Delphi-7, и мы рассматриваем возможность перехода на DelphiXE. Переход не очень приятен ... если вы хотите, чтобы ваша программа работала в 64-битной Windows7, вам нужно будет конвертировать BDE или скачать BDE Express или другой инструмент. У BDE есть проблемы с утечкой памяти, поэтому мы преобразовали эти компоненты, но останемся в Delphi-7 для более старых продуктов и будем использовать Delphi XE для новых проектов. Удачи.

0 голосов
/ 31 октября 2011

Я сделал то же самое с D7 на XE, и это было убийственно. Мое приложение, как и ваше, включает в себя базу данных - в моем случае это компоненты Interbase и Interbase Express, которые являются частью Delphi. Я сделал выбор, чтобы перейти на Unicode, но это было не красиво.

Я читал газеты, но по сравнению с моим опытом они казались неполными или, возможно, даже неправильными в некоторых моментах. Я думаю, что документы написаны с точки зрения приложения Delphi без базы данных. Я считаю, что были критические ошибки в Interbase Express (Delphi) и в Interbase. Я думаю, что по крайней мере одна ошибка была исправлена ​​в IB и пара в Delphi - если вы перейдете на версию XE. (Я не хочу рассматривать это снова прямо сейчас).

Я добавил в свой код фиксаторы, чтобы помочь Delphi. В новостных группах и в QC люди говорили мне, что я не понимаю. Ну, наконец, грядут перемены, которые решают эти проблемы, поэтому где-то там действительно должны быть проблемы.

Противоречивые взгляды, выраженные в этой теме, указывают на путаницу с Unicode. По некоторым из этих вопросов я не знаю, как это будет работать, даже пройдя через это. Но у меня есть сомнения в том, чтобы пройти через это и удержать BDE. Это может иметь встроенные проблемы, которые не будут исправлены и с которыми вы не сможете справиться. В КК есть записи, которые вы можете проверить, чтобы увидеть некоторые нерешенные вопросы.

Когда мое приложение было в D7, моя база данных IB была ANSI. Когда он впервые был преобразован в Delpi XE, он, кажется, работал нормально, хотя это была лишь краткая проверка. IB поддерживает Unicode и я там конвертировал свои данные. Вы могли бы сделать это с вашими данными? Только после этого я нашел проблемы. Я думаю, что любое значимое преобразование в Unicode означает, что вы сначала конвертируете свое хранилище данных в Unicode, а затем в приложение Delphi.

Итак, после всего этого, почему вы переходите на XE, если вам не нужен юникод? Это просто для обновления или есть что-то, что вы пытаетесь достичь? Надеюсь, этот длинный пост поможет.

...