2010-11-12 2 views
5

ив пресс-сервер построен на Delphi7, используя Indy9 TIdTCPServer, и клиенты используют TClientSocket от ScktComp по размеру, а трафик шифруется RC4 (строка)Перемещение из Delphi7 в Delphi XE или 2010 для Unicode?

, что именно мне нужно сделать мое приложение работает на XE или 2010 с поддержкой Unicode? что из этого я должен изменить?

ответ

-3

Сначала вам нужно ПОЛУЧИТЬ УСТРОЙСТВО STRINGS по умолчанию Тип STRING - WideString, это означает, что каждый символ имеет 2 байта - для быстрая миграция Я бы рекомендовал заменить все «строковые» вхождения на AnsiString, а затем поэтапно обновлять части кода, чтобы обеспечить поддержку Unicode. ХРАНИТЕ В РАЗУМЕ, что Indy - это часть, в которой вам придется много работать, НО вам повезло, потому что вы можете искать SO для ответов на ваши вопросы ...

+1

Нет, это точно НЕПРАВИЛЬНЫЙ способ приблизиться к нему. Большая часть кода, который будет иметь проблему, это код, который предполагает, что Char = 1 байт, и этот код, о котором компилятор предупредит вас, и вы можете исправить или настроить по мере необходимости. Другая общая область проблем заключается в том, что кто-то неправильно использовал символьный буфер в качестве держателя для двоичных данных. Правильный способ состоит в том, чтобы скомпилировать ваш код AS IS и решать любые проблемы, которые необходимо исправлять. И Indy 10 вообще не нужно фиксировать для Unicode, поскольку последнее исправлено уже; вам просто нужно исправить несовместимость между Indy 9 и 10. –

+3

String - это _not_ WideString в Delphi 2009. Это новый тип UnicodeString, который подсчитывается ссылкой и копируется на запись в качестве старой AnsiString. –

+0

Я сделал как г-нМохаммед Насман сказал, что я переехал в Indy10 Во-первых, так что следующий шаг - попытаться скомпилировать под XE и заменить все необходимые строки UnicodeString? Я не думаю, что это все, есть ли учебник или статья, которые могут помочь мне сделать это? – killercode

0

Не знаю, поддерживается ли Indy 9 на XE и 2010. Indy 10 имеет улучшения, но также и некоторые нарушения. Перемещение двоичных данных в строки является ИМХО никогда не хорошим выбором, но в зависимости от ситуации ему могут потребоваться лишь незначительные изменения. То, что вам точно нужно, зависит от вашего кода приложения - без фактического рассмотрения этого трудно сказать. Вся процедура манипулирования строкой должна быть проверена, особенно если вы используете их как низкоуровневые двоичные буферы и выбираете, какой путь лучше всего переносить в мир Юникода.

+0

например: result: = RC4 (memo1.text, 'password') ;, im используя голые строки, dunno, если это то, что означает u? – killercode

+0

1) Memo1.text будет UnicodeString. 2) Постоянный пароль также, как результат, если он имеет строку типа. Является ли функция RC4 способной справиться с этим? – 2010-11-12 18:30:43

+0

@killercode: функции шифрования, такие как RC4, и хеширующие функции, такие как MD5, не предназначены для строк; они предназначены для хэш-байтов. Убедитесь, что вы получаете тот же массив байтов в Delphi 7 и ваш Unicode Delphi, и шифрование и хеширование будут работать нормально. Даже запуск их на строках не удастся в версиях Delphi, отличных от Unicode (например, Delphi 7), если вы используете их с символами «high-bit non ASCII» в системах с различными кодировками символов. –

5

Unicode был введен в Delphi 2009, так что если вы хотите, чтобы поддержка юникода вы можете сделать это с Delphi 2009.

Но если вы собираетесь обновить, получить последнюю один, вы можете получить все преимущества Delphi 2010 с меньшим количеством ошибок и больше инструментов сторонних разработчиков в комплекте с Delphi XE.

другая проблема может вы столкнулись, перевод между Indy 9 к Indy 10, поскольку поддержка юникода добавлен в Indy 10, но это не 100% совместим с Indy 9.

Я предлагаю вам попробовать скомпилировать ваше приложение с Delphi 7 и Indy 10, а затем перейдите позже в Delphi XE с Indy 10.

+1

нормально, но я слышал, что indy10 по-прежнему нестабилен ?? !! – killercode

+1

в комплекте версии indy 9 и indy 10 есть некоторые ошибки, но вы можете получить их прямо с сайта indyproject, который имеет гораздо лучшую версию, чем в комплекте. –

+2

killercode: вы слышали неправильно. –

Смежные вопросы