скалогрыз писал(а):Например тот же TStrings работает прекрасно, если заранее сказать, что в него должны записываться строки в UTF8 кодировке.
Угу. Со всеми особенностями "бесплатной" поддержки utf-8. Например, пока его не начнут обрабатывать функции, не понимающие что такое суррогатные пары. Причём не обязательно внешние. Можно очень весело на встроенный QuoteChar наступить. Ситуация, конечно не типовая, но от этого не менее весёлая. Собственно давно известно, что относительно безопасно можно использовать utf-8 вместо однобайтных кодировок только в ситуациях, когда строки только складываются.
скалогрыз писал(а):потому что благоразумно более не полагается на стабильность и обратную совместимость "штатных средств" - спасибо эмбаркодерке.
Она нормальная, там, где изначально с головой писали. Впрочем, рукожопость проблема общая. Помню, когда начался массовый переход на 64 бита, из щелей поползли "крутые" сишники и c++ники с вопросами типа "а что, правда нельзя указатель к int приводить? а мы не знали..."
скалогрыз писал(а):что люди, которые в бытность свою пересели на собственные/сторонние библиотеки, так и продолжают их использовать
Я не верю, что причина столь осознанная. По моим наблюдениям, причина написания чего-то своего является банальный NIH-синдром. Людям просто лень смотреть в документацию или спрашивать у гугла. Самым простым примером является то, что многие дублирующие unicode-функции были добавлены ещё до решения о переводе rtl на уникод. Например, в Delphi есть TWideStrings, есть WideFormat... Сколько о них знают?
скалогрыз писал(а):так я это и говорю - сплав С + Pascal в одной программном средстве разработки выглядит именно так!
Ну, объектники и сейчас ни что не мешает слинковать.
скалогрыз писал(а):Т.к. RTL библиотеку для Си и для Делфи, они во многих местах могли бы сделать общую.
Они и сделали. C++ Builder мог компилировать делфовые исходники. Но особенным спросом, кроме как для установки делфовых компонентов в билдер это не пользовалось. Кстати, если вы про такое слияние языков, то его нет. У каждого языка своя rtl. Что-то подобное только Microsoft в своём .NET'е сделали, но только потому, что изначально на это закладывались. C++ тянет сишную библиотеку, но лишь потому, что сам вырос из C. И до добра это не доводит. Классический пример - оператор new. Привышие к alloc сишники взяли моду проверять его результат на неравенство null, а может в старых реализациях оно так и было, во всяком случае MSVC6 возвращает 0 при нехватке памяти. Но в стандарт вошло бросание исключения, которое почти никто не проверяет, потому что тупо копируют код у старших товарищей. (Это, кстати, и к вопросу о несовместимых изменениях в языке.
)