cfile



Автор Dani задал вопрос в разделе Другие языки и технологии

C++ VS 2010 CFile читать файл! и получил лучший ответ

Ответ от ?????? Зелёный змий ??????[гуру]
CFile F1;
F1. Open( L " text. dat " , CFile : : modeCreate | CFile : : modeReadWrite ) ; какого рожна modeCreate И modeReadWrite? modeRead
TRACE(_T("F1. GetLength ( ) = %d
"), F1. GetLength ( )); Уверен, что GetLength() > 0 ?
theApp. m_informatiоn = new CInformation[ F1. GetLength ( ) ] ;
TRACE(_T("theApp. m_informatiоn = %p
"), theApp. m_informatiоn); Уверен, что theApp. m_informatiоn != NULL ?
F1. Read ( &theApp. m_informatiоn, F1. GetLength ( ) ) ;
F1. Close ( ) ;
m_eListbox. AddString ( LPCTSTR( theApp. m_informatiоn [0 ]. sName ) ); ОШИБКА ТУТ
theApp. m_informatiоn [0 ] А это вообще что за фрукт?
Почему читаешь в theApp. m_informatiоn, а доставать чего то пытаешься из theApp. m_informatiоn[0].sName ?

Ответ от Голый Мужик[гуру]
не используйте указатели, динамическую память и массивы в стиле си там, где можно обойтись без них. используйте контейнеры (в примере ниже - std::vector).
если вы используете модель документ/вид, то следует использовать сериализацию документов mfc и оставить cfile в покое.
sizeof(theApp.m_informatiоn) всегда равно 4 для 32-биных систем и 8 для 64-битных, так что вы пишете в файл чушь.
не следует использовать размер файла для определения количества элементов, сохранённых в нём. кроме того, F1.GetLength() возвращает размер в байтах, а не в элементах - ну ты понел.
не следует вообще использовать двоичную запись составных типов в файл. строки, ссылки, указатели, таблица виртуальных функций, тип - всё это вы не сможете прочитать из файла.
для вашего трэша дам пример, но всё же настоятельно попрошу кардинально пересмотреть способ перзистенции данных.
#include <vector>
using namespace std;
template <class T>
CFile & operator<<(CFile & file, const T & value) {
file.Write(&value, sizeof(value));
return file;
}
template <class T>
CFile & operator<<(CFile & file, const vector<T> & v) {
file << v.size();
for (vector<T>::const_iterator i = v.begin(); i != v.end(); i++) {
file << *i;
}
return file;
}
template<class T>
CFile & operator>>(CFile & file, T & result) {
file.Read(&result, sizeof(T));
return file;
}
template <class T>
CFile & operator>>(CFile & file, vector<T> & result) {
typedef vector<T>::size_type SizeType;

SizeType count;
file >> count;
result.reserve(count);
for (SizeType i = 0; i < count; i++) {
T value;
file >> value;
result.push_back(value);
}
return file;
}
void Save(const CString & path, const vector<CInformation> & v) {
CFile file(path, CFile::modeCreate | CFile::modeWrite);
file << v;
}
void Load(const CString & path, vector<CInformation> & v) {
CFile file(path, CFile::modeRead);
file >> v;
}

Ответ от 3 ответа[гуру]
Привет! Вот подборка тем с ответами на Ваш вопрос: C++ VS 2010 CFile читать файл!
спросили в Коляска
Что-то понять не могу в чем разница между колясками Jetem Castle S-803W и Capella S-803. Какая лучше?
Это одна модель! Полное название Jetem Castle Capella S-803 W.

Модель прогулочной коляски
подробнее...
спросили в Ås
Подскажите, Прогулочная коляска Capella "S-901WF Air Сибирь" с какого возраста? Может кто пользовался
#yaimg136979#
Прогулочная коляска Capella S-901 WF Air Сибирь

Все прогулочные
подробнее...
спросили в Irecommend Коляска
Коляска прогулочная Capella S-901 WF Air Сибирь И Прогулочная коляска Jetem Prism S901WFM2
#yaimg92753#
Насколько известно, учредители Capella что-то не поделили)
Один ушел и
подробнее...
спросили в Накидки
очень нужны отзывы о каляске capella s228.прочность, удобность и т. п.!
Детская коляска Capella S 228 - 3950р.
Детская коляска Capella S-228

Новинка!
подробнее...
спросили в 102 год
Ваше мнение о коляске-трости Capella S-102?
Прочтите 4 коммента:
===
6 июня 2008, 08:41
kris-mi
Купила коляску для поездки
подробнее...
Ответ от 3 ответа[гуру]
Привет! Вот еще темы с похожими вопросами:

Кто может перевести с молдавского на русский: SERVICIUL STARE CIVILA , ПОЖАЛУЙСТА
Serviciul stare civila-служба гражданского состояния (что-то вроде нашего
подробнее...

Инструкция для Copalia HCT
Таблетки Copalia НСТ содержат три вещества, называемые амлодипин, валсартан и гидрохлоротиазид. Все
подробнее...
спросили в Другое
откуда певец Adrian Copilul Minune ?
румынский певец Adrian Сopilul Minune
А вот тут можно скачать и его песни:подробнее...

Механики! Чем отличаются моторы CVVT и CVVL? Какой лучше и почему?
Система CVVT регулирует параметры открытия клапанов в соответствии со скоростью вращения и
подробнее...
спросили в Техника STW
В чем отличие ТВ кабеля SAT 703 от RG6? Какой лучше делать при смене проводки для кабельного ТВ? Сейчас исп RG6.
Погонное затухание.
У RG-6 любого производителя - 21...23 дб/100 м. Центральная жила -
подробнее...

прогулочная коляска какую выбрать?
Вас Capella по каким характеристикам устраивает?
Китай, кустарно сделаны, тяжелый ход у этих
подробнее...
 

Ответить на вопрос:

Имя*

E-mail:*

Текст ответа:*
Проверочный код(введите 22):*