, само по себе было ненормальностью и частным солучаем
Ага. Только вот почему-то в php строки не поломали, несмотря на все тектонические сдвиги на пути от 4 до 7 пыха. В Си строки никто не ломал поломали. Однажды написанный код - работает. В жаваскрипте никто строки не ломает.
Один паскаль такой
особенный, что весь наработанный код вдруг надо выбросить на помойку или переделывать, и танцевать на новых костылях. Наступает версия 3 - и все библиотеки, которыми ты привык пользоваться превращаются в тыкву. И сам ты ничего не можешь поправить, потому что библиотеки эти создавались и совершенствовались другими людьми многие годы.
Или этот " этот дождь на долго" ?
Строго говоря, пути - два. Переходить на C-style и использовать везде PAnsiChar в комбинации с strlen(), или просто забить на Паскаль как таковой, что проще и сделает тебя сильнее и универсальнее, как программиста.
По Фри Паскалю был нанесён чудовищной силы удар. Разрушение - без объективных причин, замечу - существующей кодовой базы, подрыв доверия старых пользователей, усложнение вхождения для новичков. И всё ради чего? Ради слепого копирования за Дельфи 10, где непойми кто принимает непойми какие решения на фоне съёживания пользовательской базы корпорации?
Результат:
1. Моё доверие к команде разработчиков утрачено необратимо.
2. Я не рекомендую никому учить или использовать Паскаль (в отличие от, например, года 2014-го). Просто молчу об этом.
Движок я, конечно, доделаю, просто потому что. Объектная модель с её RTTI по прежнему остаётся удобной для моих целей, строки в игровом движке - не главное, существующую уродливую кривизну RTL Фри Паскаля я уже заткнул собственными заплатками. Но в перспективе стоит проблема выбора языка для дальнейшей работы. Потому что сломали строки - сломают ещё что-нибудь жизненно важное.
а любая ненормальность или частный случай рано или поздно фиксится или уходит в архив.
С точки зрения кого? Дремучих академиков - теоретиков?
Борланд Дельфи создавался практиками, которые наплевали на теоретизирования и изыски - и создали рабочий инструмент. Кто сейчас ковыряет стандарт, после того, как интеллектуальная собственность прошла через третьи руки, я не знаю.
То, что строки (а не байтовые массивы - фиксированные буферы, открытые и динамические) раньше "из коробки" (без перекодировки, без передачи информации о локали и т.д.) без искажения проходили через сетевые соедиения, само по себе было ненормальностью
Сказал
кто?Покажите мне эту суку.
Потому что в остальных языках никто подобным теоретизированием не страдает.
Достаточно было объявить по умолчанию String = UnicodeString и вставить автоматическую перекодировку при преобразовании в неё и из неё. А 8-битовые оставить в покое. Так бы поступили практики, а не сопливые теоретики, которым нужно всех заставить "делать как правильно"Опять же, проблема - не в изменениях, как таковых, а в сломе наработанной кодовой базы. Идиоты, подобным образом стреляющие себе в ногу, обречены на вымирание.
Добавлено спустя 39 минут 41 секунду:З.Ы. По идее, нормальная практика парсинга - сразу переводить в WideString и работать уже в ней. Мой парсер романов не поломался потому, что у меня после чтения из файла в AnsiString сразу стоял UTF8Decode(), а этой функции насрать на актуальную кодировку, она кастует переданную строку к pchar перед обработкой.
Причём, заметьте, не потому, что "так правильно" а потому, что обращаться к строке, как к массиву, тупо удобнее, а Utf8String такого не позволяет.
Но это - в коде, который ты написал сам.
Ещё одна проблема - проповедуя с пеной у рта этот свой юникодный джихад, они оставили стандартные классы 8-битными. Сказав А - надо сказать Б, не? Иии... вся эта кухня работала постольку, поскольку, *только* если текущей кодировкой выставлена утф-8 (то есть, в линуксе). Под виндовс же - получается жопа. Или на Фри Паскаль как отдельную сущность уже забили болт и предполагается, что я использую лазарус с эго утф8 заплатками везде-везде?