Переход с Delphi7 на Delphi XE или 2010 для Unicode?

У меня есть сервер новостей, построенный на Delphi7, с использованием Indy9 TIdTCPServer, а клиенты используют TClientSocket от ScktComp для размера, а трафик зашифрован в RC4 (строка)

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


person killercode    schedule 12.11.2010    source источник


Ответы (2)


Unicode появился в Delphi 2009, поэтому, если вам нужна поддержка Unicode, вы можете сделать это в Delphi 2009.

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

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

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

person Mohammed Nasman    schedule 12.11.2010
comment
в комплектной версии indy 9 и indy 10 есть некоторые ошибки, но вы можете получить ее непосредственно с веб-сайта indyproject, у которого гораздо лучшая версия, чем в комплекте. - person Mohammed Nasman; 12.11.2010

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

person Community    schedule 12.11.2010
comment
например: результат := RC4(memo1.text, 'пароль'); я использую голые строки, не знаю, если это то, что вы имеете в виду? - person killercode; 12.11.2010
comment
1) Memo1.text будет UnicodeString. 2) Постоянный пароль, а также результат, если он строкового типа. Способна ли функция RC4 справиться с этим? - person ; 12.11.2010
comment
@killercode: функции шифрования, такие как RC4, и функции хеширования, такие как MD5, не предназначены для работы со строками; они предназначены для хеширования байтов. Убедитесь, что вы получаете один и тот же массив байтов в Delphi 7 и Unicode Delphi, и шифрование и хеширование будут работать нормально. Даже запуск их в строках не будет работать в версиях Delphi, не поддерживающих юникод (например, Delphi 7), если вы используете их с «высокобитными не ASCII-символами» в системах с другими кодировками символов. - person Jeroen Wiert Pluimers; 13.11.2010
comment
Вы указываете, что они будут лучше работать в Unicode-версиях delphi? - person killercode; 13.11.2010
comment
Indy 9 НЕ поддерживает D2009 и более поздние версии и никогда не будет. - person Remy Lebeau; 18.11.2010