Как-бы StringList из Unicode
Есть игра, в котором названия объектов (техника, здания, люди и др.) хранятся в виде таблицы в файле. Структура файла примерно такова:
Слово (Юникод)|0x00 0x00|Слово (Юникод)
Т.е. слова записаны в юникоде, разделителем используется два нулевых символа.
МНе необходимо как-то разобрать этот как-бы StringList и вывести его на форму.
Как такое лучше всего реализовать?
Есть игра, в котором названия объектов (техника, здания, люди и др.) хранятся в виде таблицы в файле. Структура файла примерно такова:
Слово (Юникод)|0x00 0x00|Слово (Юникод)
Т.е. слова записаны в юникоде, разделителем используется два нулевых символа.
МНе необходимо как-то разобрать этот как-бы StringList и вывести его на форму.
Как такое лучше всего реализовать?
Варианта множество - все зависит от того как вам удобней это реализовать.
Например читать по 2 байта в буфер с проверкой на конец строки. Либо построковое чтение. Либо загрузка стандатным методом StringList. Как говориться выбири себе что нарвиться )
Преобразование делается WideCharToString
Как игра вообще загружает этот список? тоже побайтово? может быть есть какой-то другой способ...
Как игра вообще загружает этот список? тоже побайтово? может быть есть какой-то другой способ...
2 символа - это потому что юникод.
А все остальное - дизассемблер в руки и вперед :) Вопрос в том чего хочется достичь - удобство работы, скорость чтения или другое? Наиболее удобным является использование или потоковых классов или С-функции.
Использование потоковых классов так же пожалуй будет наиболее быстрым из стандартных средств. Существуют и более оптимальные решения - но все зависит от задач - я думаю что если бы во главу угла ставилась эффективность и скорость - врядли вообще возникал бы вопрос по StringList :)
Поэтому тут 50/50 ... но мне хочется быстро получить, удобно обработать и быстро записать :)
Хочется все хранить в памяти, а не в компоненте типа Grid, поэтому и написал StringList, как более удобный для меня класс... Если есть лучше решения, буду очень признателен... ;)
Ну или пошлите меня куда...
Ну или пошлите меня куда...
Ну во первых компоненты с закладки Win32 типа TListItem конвертируют юникод автоматически . В компонентах которые это не выполняют вы можете воспользоваться функцией для конвертации WideCharToString. В 2006-2007 поддержка юникода осуществляется в полном объеме (так говорят по крайней мере :) )
Неа, не осуществляется.
Вот ещё одна функция для конверта юникода (2007 Билдер) Utf8ToAnsi(String)
Ну должен сказать - это далеко не пустяк - потому как билдер 6 версии юникод не поддерживает. :) то что вы читали - относится именно к вижуал студии.
Хотя я еще раз повторяю - 2006 версия заявлена как полностью поддерживающая юникод.
Т.е. полноценное юникод приложение с помощью продуктов Borland на текущий момент создать невозможно?