Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Как-бы StringList из Unicode

490
10 марта 2008 года
frid-karatel
357 / / 15.09.2007
Приветствую!

Есть игра, в котором названия объектов (техника, здания, люди и др.) хранятся в виде таблицы в файле. Структура файла примерно такова:
Слово (Юникод)|0x00 0x00|Слово (Юникод)

Т.е. слова записаны в юникоде, разделителем используется два нулевых символа.

МНе необходимо как-то разобрать этот как-бы StringList и вывести его на форму.

Как такое лучше всего реализовать?
1
10 марта 2008 года
kot_
7.3K / / 20.01.2000
Цитата: frid-karatel
Приветствую!

Есть игра, в котором названия объектов (техника, здания, люди и др.) хранятся в виде таблицы в файле. Структура файла примерно такова:
Слово (Юникод)|0x00 0x00|Слово (Юникод)

Т.е. слова записаны в юникоде, разделителем используется два нулевых символа.

МНе необходимо как-то разобрать этот как-бы StringList и вывести его на форму.

Как такое лучше всего реализовать?


Варианта множество - все зависит от того как вам удобней это реализовать.
Например читать по 2 байта в буфер с проверкой на конец строки. Либо построковое чтение. Либо загрузка стандатным методом StringList. Как говориться выбири себе что нарвиться )
Преобразование делается WideCharToString

490
10 марта 2008 года
frid-karatel
357 / / 15.09.2007
сейчас я читаю побайтово... я просто думаю... нельзя ли как-то прочитать куском в какой-нибудь StringList... Ведь практичеси это StringList, только вместо переноса строки 2 нулевых символа...

Как игра вообще загружает этот список? тоже побайтово? может быть есть какой-то другой способ...
1
11 марта 2008 года
kot_
7.3K / / 20.01.2000
Цитата: frid-karatel
сейчас я читаю побайтово... я просто думаю... нельзя ли как-то прочитать куском в какой-нибудь StringList... Ведь практичеси это StringList, только вместо переноса строки 2 нулевых символа...

Как игра вообще загружает этот список? тоже побайтово? может быть есть какой-то другой способ...


2 символа - это потому что юникод.
А все остальное - дизассемблер в руки и вперед :) Вопрос в том чего хочется достичь - удобство работы, скорость чтения или другое? Наиболее удобным является использование или потоковых классов или С-функции.
Использование потоковых классов так же пожалуй будет наиболее быстрым из стандартных средств. Существуют и более оптимальные решения - но все зависит от задач - я думаю что если бы во главу угла ставилась эффективность и скорость - врядли вообще возникал бы вопрос по StringList :)

490
11 марта 2008 года
frid-karatel
357 / / 15.09.2007
мне необходимо считать эти данные и вывести в таблицу на экран... в таблице я изменю значения и хочу их записать обратно...
Поэтому тут 50/50 ... но мне хочется быстро получить, удобно обработать и быстро записать :)

Хочется все хранить в памяти, а не в компоненте типа Grid, поэтому и написал StringList, как более удобный для меня класс... Если есть лучше решения, буду очень признателен... ;)
17K
11 марта 2008 года
savostin
37 / / 12.10.2006
Пардон за возмжный оффтопик, а как в CBuilder'e вообще работать/выводить юникод? В частности интересует добавление юникодовых значений в ComboBox и пр. компоненты, у которых Items TStrings*, т.е. AnsiString =(
Ну или пошлите меня куда...
1
11 марта 2008 года
kot_
7.3K / / 20.01.2000
Цитата: savostin
Пардон за возмжный оффтопик, а как в CBuilder'e вообще работать/выводить юникод? В частности интересует добавление юникодовых значений в ComboBox и пр. компоненты, у которых Items TStrings*, т.е. AnsiString =(
Ну или пошлите меня куда...


Ну во первых компоненты с закладки Win32 типа TListItem конвертируют юникод автоматически . В компонентах которые это не выполняют вы можете воспользоваться функцией для конвертации WideCharToString. В 2006-2007 поддержка юникода осуществляется в полном объеме (так говорят по крайней мере :) )

8.8K
12 марта 2008 года
Se AD WMD
165 / / 10.01.2007
Цитата:
В 2006-2007 поддержка юникода осуществляется в полном объеме (так говорят по крайней мере:))


Неа, не осуществляется.
Вот ещё одна функция для конверта юникода (2007 Билдер) Utf8ToAnsi(String)

17K
12 марта 2008 года
savostin
37 / / 12.10.2006
Мне нужно не конвертировать юникод в анси, а показать юникод. Всякие там неанглийские веселые буквочки с домиками и пр. Где-то читал, что надо в настройках проекта что-то указать и все AnsiString автоматически становятся WideString, ну и отображается все естественно правильно. Но у меня не получилось. У кого-то есть положительный опыт создания полноценного юникод приложения в хоть каком-нибудь билдере? Не хочется из-за такого пустяка портировать все в Visual Studio....
1
12 марта 2008 года
kot_
7.3K / / 20.01.2000
Цитата: savostin
Мне нужно не конвертировать юникод в анси, а показать юникод. Всякие там неанглийские веселые буквочки с домиками и пр. Где-то читал, что надо в настройках проекта что-то указать и все AnsiString автоматически становятся WideString, ну и отображается все естественно правильно. Но у меня не получилось. У кого-то есть положительный опыт создания полноценного юникод приложения в хоть каком-нибудь билдере? Не хочется из-за такого пустяка портировать все в Visual Studio....


Ну должен сказать - это далеко не пустяк - потому как билдер 6 версии юникод не поддерживает. :) то что вы читали - относится именно к вижуал студии.
Хотя я еще раз повторяю - 2006 версия заявлена как полностью поддерживающая юникод.

17K
12 марта 2008 года
savostin
37 / / 12.10.2006
Ок, а 2007 билдер? Если поддерживает полностью как быть с ComboBox? у него в items ну никак не хотят добавляться уникод строки... Вернее показываться правильно
8.8K
12 марта 2008 года
Se AD WMD
165 / / 10.01.2007
2007 билдер поддерживает UTF8 только в RichEdit.
17K
12 марта 2008 года
savostin
37 / / 12.10.2006
Охренеть, какой у них век на дворе? :(
Т.е. полноценное юникод приложение с помощью продуктов Borland на текущий момент создать невозможно?
490
12 марта 2008 года
frid-karatel
357 / / 15.09.2007
как бы возможно, но только с использованием сторонних компонентов... по крайней мере, чтобы мне отобразить строки юникод как таблицу, я использую другие компоненты...
17K
12 марта 2008 года
savostin
37 / / 12.10.2006
Можно хотя бы названия? Смотрел TMS, вроде работает. Побесплатнее альтернатив нету?
490
12 марта 2008 года
frid-karatel
357 / / 15.09.2007
да, библиотека TMS... вернее, TMSUNICODE... она бесплатна полностью... по крайней мере у меня есть и Packages, и Source... правда, она вроде как под Delphi, но можно скомпилировать под Borland C++
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог