> -- Илья Ермаков писал(а):
> Ivor, расскажите, пожалуйста, поподробнее, что осложняет перевод под Юникод?Я так понимаю, что все данные от системы приходят сейчас в ASCII, сохраняются тоже в ASCII, а вот внутри среды идут многократные перекодировки? Видимо, вначале среда была на коротких символах, потом решили перейти на Юникод, но ограничилсиь только определением типа CHAR как 2-байтового, а все ранее напианное они перелопачивать не стали?
Именно так и есть. В системе и компиляторе используется тип SHORTCHAR (в модуле Kernel, в загрузчике - везде имена объектов короткие). Ну ладно, это можно вылечить малой кровью через UTF-8. Формат Блекбоксовских документов - для хранения типов объектов опять используются короткие символы. В подсистеме Text при сохранении отдельно идут символы набора Latin-1, отдельно - юникода. Ресурсные файлы (по крайней мере файлы сообщений) читаются ПОБАЙТНО, а не через подсистему Text! Ну и почти все win-функции представлены "A"-вариантами. Это из того, с чем я столкнулся. По отдельности всё это исправляется, но только с неюникод-варсиями среды работать не будет. Ну в самом деле, исправлю я среду, будет она юникод в коротких строках как utf-8 хранить и перекодировать при необходимости. Но как с такими модулями из неюникод-версий работать? Вместо русских имён кракозябрвы писать?

На это ещё накладываются куски от Mac-версии, от Java-версии, полная каша, одним словом. Вот чем дольше я на BlackBox смотрю, тем больше убеждаюся, что его не исправлять надо, а переделывать с нуля.

Так что я сейчас подправил подсистему Text - она теперь все символы как юникод хранит (и Latin-1 в том числе). Изменил все процедуры на "W"-варианты. У меня под Wine`ом с грехом пополам работает. Под WinXP тоже. А под 98 - нет. Но вот дальше всё лопатить както не очень хочется. Вот отсюда вопрос и возник.