0 / 0 / 0
Регистрация: 01.12.2012
Сообщений: 49
1

Чтение и запись в файл .bin (MFC)

28.02.2014, 00:29. Показов 1905. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Использую стандартные диалоги, но при сохранение файла .bin он весит 4 бита, то бишь там пусто и ничего не записывается.
stdafx.h
C++
1
2
3
4
...
static Bad ob[15];
static int aa = 0;
...
Bad.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
class Bad
{
public:
    Bad(void);
    ~Bad(void);
    COLORREF Color;
    int m_width;
    int m_height;
    int Count;
    int m_x, m_y;
    void DrawDraft(const int &x, const int &y, CWnd *);
};
Bad.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Bad::Bad(void) : Color(RGB(62,48,158)), m_width(0), m_height(0), Count(0), m_x(0), m_y(0)
{
}
 
 
Bad::~Bad(void)
{
}
 
void Bad::DrawDraft(const int &x, const int &y, CWnd* a)
{
    CClientDC Dc(a);
    CBrush Brush;
    Brush.CreateSolidBrush(Color); 
    Dc.SelectObject(Brush);
    CRect Rect(x - 100 - m_width, y - 50 - m_height, x + 100 + m_width, y + 50 + m_height);
    Dc.RoundRect(Rect, CPoint(17, 17)); 
    DeleteObject(Brush);
}
CWinLab01Doc.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
...
void CWinLab01Doc::Serialize(CArchive& ar)
{
    if (ar.IsStoring())
    {
        // TODO: add storing code here
        ar << aa;
        for(size_t i(0); i!= aa; ++i)
        {
            ar << ob[i].m_x;
            ar << ob[i].m_y;
        }
    }
    else
    {
        ar >> aa;
        for (size_t i(0); i != aa; ++i)
        {
            ar >> ob[i].m_x;
            ar >> ob[i].m_y;
        }
        // TODO: add loading code here
    }
}
...
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.02.2014, 00:29
Ответы с готовыми решениями:

MFC Как организовать чтение-поиск-запись в файл?
Смысл таков - есть маленькая игра с 2 пользователями. Требуется сохранять рекорды в...

Запись в файл (MFC)
нужно произвести запись оценок есть структура struct stud { char f }; extern struct stud dat;...

Запись в файл (MFC)
Использую MFC CFile openFile; CString fName; fName = &quot;file.txt&quot;; ...

Запись/извлечение в файл (MFC)
Всем привет! Сегодня в универе начали изучать MFC. Сделали 3 программки по...

4
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
28.02.2014, 00:42 2
Цитата Сообщение от Ramix57 Посмотреть сообщение
при сохранение файла .bin он весит 4 бита
Что?
0
Модератор
Эксперт по электронике
8909 / 6678 / 918
Регистрация: 14.02.2011
Сообщений: 23,523
03.03.2014, 23:35 3
Цитата Сообщение от Ramix57 Посмотреть сообщение
static int aa = 0;
Цитата Сообщение от Ramix57 Посмотреть сообщение
ar << aa;
* * * * for(size_t i(0); i!= aa; ++i)
Цитата Сообщение от Ramix57 Посмотреть сообщение
при сохранение файла .bin он весит 4 бита,
а сколько ты хотел?
0
0 / 0 / 0
Регистрация: 01.12.2012
Сообщений: 49
06.03.2014, 12:28  [ТС] 4
ValeryS, он не сохранял переменные, так как они были static и поэтому в цикл не заходил.
Возникла новая проблема.
По нажатию левой кнопки мыши мы что-то рисуем(1). Дальше сохраняем файл(2). Продолжаем рисовать(3). Открываем сохраненный файл(4). Далее у нас будет нарисовано то, что было на этапе (3), а не то, что на (1). Он почему то не хочет заходить в условие. Как это решить и с чем проблема эта связана?
...Doc.cpp
C++
1
2
3
4
void CWinLab01Doc::Serialize(CArchive& ar)
{ 
    ob.Serialize(ar);
}
ob объект класса Objects, который писал сам.
Objects.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#define MAX 15
 
class Objects
{
public:
    int m_xcenter[MAX], m_ycenter[MAX];
    int m_width[MAX], m_height[MAX];
    int amount;
    COLORREF Color[MAX];
    Objects(void);
    ~Objects(void);
    void DrawDraft(CDC *pDc);
    void Serialize(CArchive &ar);
    
};
Objects.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
void Objects::Serialize(CArchive& ar)
{ 
    if (ar.IsStoring())
    {
        
        ar << amount;
        for(int i(0); i!= amount; ++i)
            ar << m_xcenter[i] << m_ycenter[i] << m_width[i] << m_height[i] << Color[i];
    }
    else
    {
        amount = 0;
        ar >> amount;
        for(int i(0); i!= amount; ++i)
            ar >> m_xcenter[i] >> m_ycenter[i] >> m_width[i] >> m_height[i] >> Color[i];
    }
}
Вложения
Тип файла: zip exe.zip (93.7 Кб, 7 просмотров)
0
Модератор
Эксперт по электронике
8909 / 6678 / 918
Регистрация: 14.02.2011
Сообщений: 23,523
06.03.2014, 12:50 5
Цитата Сообщение от Ramix57 Посмотреть сообщение
он не сохранял переменные,
Он это кто?

Цитата Сообщение от Ramix57 Посмотреть сообщение
так как они были static
это здесь причем?
у тебя не заходил в цикл потому что количество равно 0
и кстати зачем статик?
Цитата Сообщение от Ramix57 Посмотреть сообщение
Возникла новая проблема.
По нажатию левой кнопки мыши мы что-то рисуем(1). Дальше сохраняем файл(2). Продолжаем рисовать(3). Открываем сохраненный файл(4). Далее у нас будет нарисовано то, что было на этапе (3), а не то, что на (1).
переведи
Цитата Сообщение от Ramix57 Посмотреть сообщение
ob объект класса Objects, который писал сам.
Цитата Сообщение от Ramix57 Посмотреть сообщение
class Objects
{
public:
..................
void Serialize(CArchive &ar);
для того чтобы нормально работала сериализация нужно чтобы класс был наследником CObject
изучи что такое MFC
сходи на сайт http://www.firststeps.ru/
0
06.03.2014, 12:50
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.03.2014, 12:50
Помогаю со студенческими работами здесь

Запись/чтение структуры в файл
есть структура: struct OBYEKT { std::string neym; int nomer; }; std::vector &lt;OBYEKT&gt;...

Запись в файл. Чтение из файла.
Доброго времени суток! У меня вопрос по работе с файлом. Передо мной задача считать данные(числа)...

Побайтовая запись в файл и чтение из него
Собственно хотелось бы узнать как можно побайтово писать в файл, а потом также читать из него?...

Чтение и запись в один и тот же файл с CreateFile
Добрый день. необходимо, чтобы можно было открыть файл, произвести из него чтение, и в процессе...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru