- преобразование строки Unicode на указанную страницу кода только с Delphi: проще, чем когда-либо. Благодаря способности класса String создавать строку требуемой кодовой страницы и конвертировать ее из одной кодовой страницы в другую.
- FillChar - это байты, а не символы, имя сейчас несчастливо. На самом деле это не так смущает.
- Это предупреждение, чтобы вы подумали, что он сделал. Работа выполнена.
- О да. Но повторное тестирование и повторное чтение были для меня самой большой выгодой.
Я мигрировал все мои проекты на Delphi 2009/2010 и обнаружил преимущества включают:
A. тщательное повторное чтение моего кода принесло много способов, мне нужно, чтобы очистить его (потому что это раздутая старая масса несчастных случаев и инкрементный кодовый шлам, как и большинство проектов RAD/delphi), некоторые из которых являются чисто юникодными или связанными с портами, но все это сделало продукты более эффективными для принудительных изменений.
B. чистый мир, с меньшим количеством сторонних компонентов. Снижение TNT и десяток или два сторонних компонента сделают ваш проект меньшим, более ортогональным и более легким для поддержки.
C. Нет причин для портирования, чтобы сделать это в одну сторону. Ни один из моих портов проекта фактически не «перемещен» на Delphi 2009/2010. Все они прекрасно строят в обоих мирах. Я использую тип UnicodeString во всем моем коде везде, где мне это нужно, и я делаю typedef для WideString при компиляции на Delphi 2007 или более ранних версиях.
D. Идея delphi 2010 отлично работает в Windows Vista и Windows 7, а язык - это радость для работы. Delphi 2009 и 2010 не разбиваются, что Delphi 2007 и Delphi 7 часто делают для меня.
Если вам не нужна поддержка Vista и Win7, и вы на 100% счастливы и без проблем используете TNT-компоненты, и ваше приложение не сделает вам деньги, а затем оставьте его там, где оно есть. Если это принесет вам деньги, инвестируйте свое время, и вы скоро увидите награды. Delphi 2010 и 2009 года являются лучшими версиями delphi, и единственной основной головной болью остается то, что документация оставалась ниже качества Delphi 7 с тех пор, как они перешли с файлов справки формата WinHelp.
Назначение AnsiString для UnicodeString МОЖЕТ привести к потере данных! Вот почему компилятор выдает предупреждение для него. Это не предупреждение о производительности, это действительно предупреждение о данных. С другой стороны, назначение UnicodeString для UTF8String НЕ приведет к потере данных, поскольку UTF-8 представляет собой кодировку Unicode без потерь по дизайну, и для нее не сообщается предупреждение о компиляторе. –
Какие символы, хранящиеся в AnsiString, не представлены в Юникоде, а на каких наборах символов они находятся? –
Реми? У Роба есть смысл. Поразмыслить над тем, какие потери повышали бы с 8 бит AnsiString UP до UnicodeString, которые могли когда-либо возникнуть? Потому что единственная причина, по которой я думал, что это предупреждение, заключалась в том, чтобы заставить вас подумать: «Почему у меня есть эта AnsiString здесь, и разве я не теряю память и процессорное время со всеми этими неявными преобразованиями?» –