Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.05.2008, 01:18   #11
sd13
Пользователь
 
Регистрация: 21.05.2008
Сообщений: 21
По умолчанию

нет. что то не так. несколько раз прочитал твои сообщения и не понял. наверно в моем учебнике( основы прого win32 финогенов ) этому вопросу уделено мало внимания...или я торможу ближе к ночи...

для CInfo *obj=new CInfo; срабатывает конструктор по умолчанию
Код:
CInfo::CInfo() 
{
	
	 
	msSportsman.mNumber=0;
	msSportsman.mAge=0;
	msSportsman.mWeight=0;
	msSportsman.nGrowing=0;
//	msSportsman.szName=new char [11];
	strcpy(msSportsman.szName, "nansme");
//	msSportsman.szSurname=new char [11];
	strcpy(msSportsman.szSurname, "non");
//	mCommand=new char [11];
	strcpy(mCommand, "non");
//	szCountry=new char [11];
 	strcpy(szCountry, "non");
//	szTypeOfSport=new char [11];
	strcpy(szTypeOfSport, "non");
 
 
	count++;
 
}
примерно так

этот объект записывается 11 раз подряд в файл

причем тут конструктор для ptr , если как я понял., это указатель в который мы считываем данные из файла???

извини, что так туго понимаю, но оч надо это сделать. это часть моего курсача. help me, please
sd13 вне форума Ответить с цитированием
Старый 22.05.2008, 01:20   #12
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Выкладывайте проект целиком.
B_N вне форума Ответить с цитированием
Старый 22.05.2008, 01:34   #13
sd13
Пользователь
 
Регистрация: 21.05.2008
Сообщений: 21
По умолчанию

для ясности я оставил хэдэры .
коменты остались от того, как я пробывал строкам выделять помять через new - не оч хорошо потом вышло.
Вложения
Тип файла: txt project.txt (10.8 Кб, 130 просмотров)

Последний раз редактировалось B_N; 22.05.2008 в 02:31.
sd13 вне форума Ответить с цитированием
Старый 22.05.2008, 01:48   #14
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Так, в общем гора там всего неправильно, начиная с того, что в файл Вы пишете вовсе не содержимое объекта класса, а содержимое стэка в том месте, где лежит указатель на объект. Плюс непонятно, зачем там столько new. С этого всё и начинается. Понятно только, что к WinAPI и секциям тема никакого отношения не имеет, так что переношу в "помощь студентам", а разбираться будем завтра...

Последний раз редактировалось B_N; 22.05.2008 в 02:32.
B_N вне форума Ответить с цитированием
Старый 22.05.2008, 11:25   #15
sd13
Пользователь
 
Регистрация: 21.05.2008
Сообщений: 21
По умолчанию

как это прикрипить к посту???
может проще на E-mail???
sd13 вне форума Ответить с цитированием
Старый 22.05.2008, 11:29   #16
sd13
Пользователь
 
Регистрация: 21.05.2008
Сообщений: 21
По умолчанию

все new скоментарены ведь
sd13 вне форума Ответить с цитированием
Старый 22.05.2008, 11:51   #17
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Цитата:
Сообщение от sd13 Посмотреть сообщение
как это прикрипить к посту???
может проще на E-mail???
Да не нужно, текст я уже прикрепил, а ошибки Ваши нашёл.

Цитата:
Сообщение от sd13 Посмотреть сообщение
все new скоментарены ведь
Речь вот об этом:
Код:
    for(int i=0; i<11; i++){
		CInfo *obj=new CInfo;
		Info.write((char*)obj, sizeof(CInfo));}
Зачем? Про то, что старый блок памяти теряется уже и говорить нечего.
Одним словом, ошибки проистекают во-первых, от непонятно зачем нужного флага nocreate вот здесь:
Код:
	ofstream	Info("stock.dat",  ios::nocreate  );
После замены на
Код:
ofstream	Info("stock.dat",  ios::binary | ios::out);
всё пришло в норму. И во-вторых, взятие адреса при записи/чтении файла
Код:
Info.write((char*)&obj, sizeof(CInfo));}
....................
LogPass3.read((char*)&obj, sizeof(CInfo));
Уберите "&". Вы читаете-пишете стэк в том месте, где лежит указатель, а не объект, которому только что выделили память. После всего этого программа Ваша "работает", но очень предостерёг бы от таких манипуляций с классами. В общем случае добром это не кончится. И пользуйтесь отладчиком.
B_N вне форума Ответить с цитированием
Старый 22.05.2008, 12:44   #18
sd13
Пользователь
 
Регистрация: 21.05.2008
Сообщений: 21
По умолчанию

ваше замечание о том что объекты создаются в стеке привело меня к вот такому фрагменту
Код:
    for(int i=0; i<11; i++){
		CInfo obj ("","","",-3,-3,-3,-3,"","");
		Info.write((char*)&obj, sizeof(CInfo));}
т.е. вызываем конструктор с параметрами. после этого все таботает ок.

еще один вопрос - можно ли связать проекцию файла с stl - левской сортировкой.вставкой.удалением???
sd13 вне форума Ответить с цитированием
Старый 22.05.2008, 13:15   #19
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Цитата:
Сообщение от sd13 Посмотреть сообщение
ваше замечание о том что объекты создаются в стеке привело меня к вот такому фрагменту
Код:
    for(int i=0; i<11; i++){
		CInfo obj ("","","",-3,-3,-3,-3,"","");
		Info.write((char*)&obj, sizeof(CInfo));}
т.е. вызываем конструктор с параметрами. после этого все таботает ок.
Ну это Вы какую-то ерунду придумали. Если смысл вызова конструктора сотню-другую раз подряд над одним и тем же объектом при записи я ещё могу как-то себе представить, то читаете-то Вы это куда потом? Так же, в один и тот же объект?


Цитата:
Сообщение от sd13 Посмотреть сообщение
еще один вопрос - можно ли связать проекцию файла с stl - левской сортировкой.вставкой.удалением???
При желании-то конечно можно исхитриться... Если представить, что это получается массив объектов, ну и т.д. Ну а смысл-то в чём? Я, честно говоря, пока вообще не понял, зачем Вам мэппинг как таковой, разве что для эксперимента... И потом, Вы силой сводите свои классы к, фактически, простеньким плоским структурам в памяти. Представьте себе, что у Вас в объекте появятся указатели. Собственно, Вы так уже пытались делать (с этим множеством new, которые теперь под комментариями), сами видели, чем кончилось....
B_N вне форума Ответить с цитированием
Старый 22.05.2008, 13:39   #20
sd13
Пользователь
 
Регистрация: 21.05.2008
Сообщений: 21
По умолчанию

нет . это я просто для примера записал так много объектов. цель состоит в том, что я записываю объекты по умолчанию /объект - спортсмен с заданными атрибктами.*/
потом в функции main проедстоит добавлять эти атрибуты или редактировать. только надо вкинуть в код конструктора по умолчанию какой-нибудь флаг, если объект непроинициализирован толком.
маппинг я использую для более удобной работы с файлом - проще работать с указателем. ну и конечно да, ради экспиримента
счас попробую сортировку реализовать

и еще вопрос. как динамически узнать границы проекции???
sd13 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запись в файл и чтение из него. Swool Общие вопросы C/C++ 8 26.08.2008 16:39
Запись и чтение файла... Altera Общие вопросы Delphi 5 06.05.2008 20:22
Запись и чтение сообщений Altera Работа с сетью в Delphi 6 13.04.2008 03:31