Итак, сабж сделан. Архивчик UtfAnsiDecoder.rar должен быть прикреплён.
Комментим, плз. Комментим _все_. Те, кому всё кристально ясно и
очевидно, советуем, как улучшить статью (напоминаю, что программы на
языке Forth мы (и не только) называем статьями ;) ) -- улучшать там
есть чего: как минимум статья избыточна, т.е. определены слова,
которые можно было не определять, это моя привычка делать избыточные
typedefs в C++ для улучшения читаемости кода; может и не стоит это
рефакторить.
Те, кому какой-то фрагмент решения не очевиден, задаём вопросы и
все вместе на них отвечаем. Могу сказать, что после
написания конвертации из Utf-8>Ansi обратная конвертация пишется по имеющейся
структуре автоматически, не задумываясь. Приятно.
Known bugs:
Баги, с которыми я даже не пытался разбираться ввиду их полезных
особенностей :
1. Двухкратный вызов Utf-8>Ansi-file или Ansi>Utf-8-file
приводит к интересной ошибке, взгляните :-)
Наверняка, нужно просто обнулить хэндл файла, но я это не
смотрел.
2. Вызов подряд
s" W:\Projects\Forth\UtfAnsiDecoder\Data\Example-utf8.txt"
Utf-8>Ansi-file
s" W:\Projects\Forth\UtfAnsiDecoder\Data\Example-ansi.txt"
Ansi>Utf-8-file
приводит к неправильной работе второго слова, т.е. Ansi>Utf-8-file.
Я думаю, причина та же, что и в п.1.
3. Работают только захардкоженные пути к файлам, т.к. я не знаю, как
сделать относительные пути. Хотя знаю.. Есть слово chdir. Да,
можно.
How to use:
1. Распаковываете архив на диск цэ (в связи с Known bugs.3)
2. Подключаете файл c:\UtfAnsiDecoder\UftAnsiDecoder.ft
fload c:\UtfAnsiDecoder\UftAnsiDecoder.ft
или
include c:\UtfAnsiDecoder\UftAnsiDecoder.ft
3. выполняете слово main
Перед исполнением "активных действий" будет показан небольшой хелп
по юзанию обоих слов.
--
Best regards,
Sergey mailto:sergey.ka...@gmail.com