![]() |
|
|
![]()
|
|
| mr.Anderson |
|
||||||
![]() iOS Lead Developer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3374 Регистрация: 20.12.2004 Где: далеко Репутация: 3 Всего: 128 |
Возникла задача сохранить структуру, содержащую строки, в бинарный файл. Оттуда потом в бинарном же режиме все это удовольствие нужно считать. Строки хоть char *, хоть UnicodeString - не суть, лишь бы работало. По умолчанию в Билдере, насколько я знаю, char тоже юникодный. В интернете нашел только сохранение через data(), но не знаю, как это использовать при записи и чтении структуры.
Структура имеет следующий вид:
Процедура вывода этой структуры:
И сама главная процедура, пишущая и читающая из файла в бинарном режиме.
В итоге после чтения из файла обе строки в переменной W имеют NULL как сами по себе, так и в своем data(). Как быть? Это сообщение отредактировал(а) mr.Anderson - 16.5.2009, 20:31 |
||||||
|
|||||||
| A5uKa |
|
|||
|
TЋ♥s F1rȜ iƧ BurȠiƞg ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 1928 Регистрация: 30.8.2008 Репутация: 2 Всего: 16 |
Может в fopen с w ?
|
|||
|
||||
| mr.Anderson |
|
|||
![]() iOS Lead Developer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3374 Регистрация: 20.12.2004 Где: далеко Репутация: 3 Всего: 128 |
A5uKa, думаем, что говорим. Если не знаете, лучше ничего не писать.
Ну что, никто не сталкивался с этой проблемой, что ли? |
|||
|
||||
| dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 32 Всего: 158 |
mr.Anderson, UString - это не POD-тип, поэтому либо для него нужно делать специальную обработку, либо вместо UString в структуре делать char[].
|
|||
|
||||
| THandle |
|
|||
![]() Хранитель Клуба Награды: 1 Профиль Группа: Админ Сообщений: 3639 Регистрация: 31.7.2007 Где: Moscow, Dubai Репутация: 25 Всего: 372 |
mr.Anderson, вообще строка это по идее указатель и его просто так не запишешь. Надо сначала длину, а потом уже строку. Распространенная ошибка)
Вот вариант через TWriter.
|
|||
|
||||
| mr.Anderson |
|
||||||
![]() iOS Lead Developer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3374 Регистрация: 20.12.2004 Где: далеко Репутация: 3 Всего: 128 |
THandle, ага)) Только у меня еще заработало вот так:
И еще надо было подправить вывод, printf("%s") не срабатывает. Я пока ищу модификатор для вывода юникодных строк в BCB2009, но пока сделал топорно (зато работает)
Ну и в выводе, соответственно:
|
||||||
|
|||||||
| Alca |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 25 Всего: 50 |
Для юникода:
|
|||
|
||||
| mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 167 Всего: 306 |
выглядит зловеще Интересный подход Однако замечу - все несколько проще. Стандартная библиотека включает в себя функции, как для анси-строк, так и для юникод-строк. см. здесь зы. THandle, камрад вроде как не брезгуешь std::auto_ptr, отчего по классике память выделяешь |
|||
|
||||
| dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 32 Всего: 158 |
||||
|
||||
![]()
|
| Правила форума "С++ Builder" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C++ Builder | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |