Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
2 / 2 / 0
Регистрация: 23.09.2013
Сообщений: 150
1

Запись данных класса в файл

21.03.2014, 15:13. Просмотров 1772. Ответов 15
Метки нет (Все метки)

Добрый день всем!
Помоги разобраться как сделать.
Есть класс. Нужно сделать ввод вывод элементов класса в текстовый файл.
Класс имеет поля "имя" и "номер"и "объём".
Вводим их через Edit и введённые данные записываются в текстовый файл.
Потом сделать вывод введённых данных из этого файла в мемо.

Я попытался реализовать, но я раньше с файлами не работал и не знаю, что да как.
Помогите разобраться.


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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#include <vcl.h>
#include <stdio.h>
#include <string.h>
#include <io.h>
#include <sys/stat.h>
#pragma hdrstop
 
#include "Unit1.h"
 
class  ZU      //базовый класс Запоминающие уст-ва
{
public:
   ZU();
   ZU (char*nm, int n, int v);
   bool store();
 
 protected:
    char nm [200]; // наименование ЗУ
    int n;  // номер
    int v; // объём
 };
bool ZU::store()
{
    file *f;
    if ((f=fopen("f1.txt","wt"))==NULL)
   {
        return false;
   }
   fprintf (f,"данные_класса %s\n%d\n",this->nm,this->n);
   fclose(f);
 
   strust stat statbuf;
   FILE*stream;
   if ((stream = fpoen ("f1.txt","r+t"))== NULL)
   {
   ShowMessage("Невозможно_ открыть_файл");
   return;
   }
   stat ("f1.txt",&statbuf); // чтение информации
   fclose(stream);
 
   //отображение информации
   if (statbuf.st_mode & S_IFCHR)
   Memo1->Lines->Add("Дискриптор ");
   if (statbuf.st_mode & S_IFREG)
   Memo1->Lines->Add ("Cсылка на файл");
   if (statbuf.st_mode & S_IREAD)
   Memo1->Lines->Add ("Чтение файла");
   if (statbuf.st_mode & S_IWRITE)
   Memo1->Lines->Add("Содержимое файла"+ AnsiString((char)(nm+statbuf.st_dev)+InToStr(n)+nToStr(v)));
 
 
   return true;
}
 
 protected:
 char nm [200]; // наименование ЗУ
 int n;
 int v // номер
 };
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.03.2014, 15:13
Ответы с готовыми решениями:

Запись данных класса в файл
Приветствую. Подскажите пожалуйста на счет такого вопроса. Имеется класс, содержащий следующие...

Запись в файл данных класса
Нужно сделать так что клас который наследовал записывал книгу в файл Вот мой код: #include...

Запись данных класса в файл
Не могу никак разобраться что же я делаю не так. В общем есть написанный элементарный класс...

Запись в файл данных из обьекта класса
подскажите пожалуйста,как записать данные из обьекта g4 в файл,что-то пытаюсь,но никак не могу...

15
61 / 37 / 16
Регистрация: 15.03.2014
Сообщений: 315
21.03.2014, 15:23 2
Лучший ответ Сообщение было отмечено Zumuist как решение

Решение

C++
1
Memo1->SaveToFile("<путь к файлу>");
0
2 / 2 / 0
Регистрация: 23.09.2013
Сообщений: 150
21.03.2014, 15:45  [ТС] 3
а запись корректную в файл как организовать?
0
61 / 37 / 16
Регистрация: 15.03.2014
Сообщений: 315
21.03.2014, 15:49 4
Zumuist, а чем вам эта — некорректна?
0
2 / 2 / 0
Регистрация: 23.09.2013
Сообщений: 150
24.03.2014, 13:56  [ТС] 5
Ошибка
0
Миниатюры
Запись данных класса в файл  
2 / 2 / 0
Регистрация: 23.09.2013
Сообщений: 150
24.03.2014, 14:47  [ТС] 6
Вывод из теста из файла в Memo через SaveToFile ???
0
Почетный модератор
Эксперт С++
5836 / 2843 / 390
Регистрация: 01.11.2011
Сообщений: 6,881
24.03.2014, 15:38 7
Лучший ответ Сообщение было отмечено Zumuist как решение

Решение

Zumuist,
C++
1
Memo1->Lines->SaveToFile("D:\\Temp\\name.txt");
1
2 / 2 / 0
Регистрация: 23.09.2013
Сообщений: 150
24.03.2014, 15:52  [ТС] 8
C++
1
Memo1->Lines->SaveToFile("D:\\f1.txt");
]- дак это ввод данных в файл через мемо.

А мне надо ввод данных в файл через edit.
А в Мемо вывести содержимое текстового файла!
0
Почетный модератор
Эксперт С++
5836 / 2843 / 390
Регистрация: 01.11.2011
Сообщений: 6,881
24.03.2014, 15:58 9
Вы удивитесь. ))
C++
1
Memo1->Lines->LoadFromFile("D:\\f1.txt");
1
2 / 2 / 0
Регистрация: 23.09.2013
Сообщений: 150
24.03.2014, 16:21  [ТС] 10
СПАСИБО, ИМЕННО ЭТО И ТРЕБОВАЛОСЬ! Сам писал не раз, почему то вылезала обика. но ошибку нашёл.

Добавлено через 3 минуты
А не поможете реализовать ввод данных (элементов класса) через Edit в текстовый файл ??

Пробую уже 2-ой день ничего не получается толком.

Есть класс с параметрами.
Имеется три параметра: наименование Edit2, номер Edit1, объём Edit3.

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
26
27
28
29
30
31
32
33
34
35
36
#include <vcl.h>
#include <stdio.h>
#include "f1.txt"
#include <string.h>
#include <io.h>
#include <sys/stat.h>
#pragma hdrstop
 
#include "Unit1.h"
TStringList*List= new TStringList;
AnsiString SFile="f1.txt";
 
class  ZU      //базовый класс Запоминающие уст-ва
{
public:
   ZU();
   ZU (char*nm, int n, int v);
   bool store();
 
 protected:
    char nm [200]; // наименование ЗУ
    int n;  // номер
    int v; // объём
 };
bool ZU::store()
{
    FILE *f;
    if ((f=fopen("f1.txt","wt"))==NULL)
   {
   ShowMessage("Данные записаны");
        return false;
   }
   fprintf (f,"данные_класса %s\n%d\n",this->nm,this->n, this->v);
   fclose(f);
return true;
};
Добавлено через 6 минут
Ввод осуществлялся по нажатию кнопки.
0
Почетный модератор
Эксперт С++
5836 / 2843 / 390
Регистрация: 01.11.2011
Сообщений: 6,881
24.03.2014, 16:33 11
C++
1
2
3
4
5
6
7
8
9
10
11
void __fastcall TForm1::Button1Click(TObject *Sender)
{
TStringList*List= new TStringList;
 
List->Add( Edit1->Text );
List->Add( Edit2->Text );
List->Add( Edit3->Text );
 
List->SaveToFile("D:\\111.txt");
delete List;
}
Или в чем сложность?

А так вообще возьмите ini-файл и не мучайтесь: INI - Загрузка и сохранение настроек
1
2 / 2 / 0
Регистрация: 23.09.2013
Сообщений: 150
24.03.2014, 16:46  [ТС] 12
Надо чтоб через элементы класса шло добавление.
Через Edit вводятся элементы класса, и сохраняются в тестовый файл. Я не знаю. как через класс добавление сделать.

Чтоб как -то через эту функцию реализовывалось.
C++
1
2
3
4
5
6
7
8
9
bool ZU::store()
{
    file *f;
    if ((f=fopen("f1.txt","wt"))==NULL)
   {
        return false;
   }
   fprintf (f,"данные_класса %s\n%d\n",this->nm,this->n);
   fclose(f);
0
Почетный модератор
Эксперт С++
5836 / 2843 / 390
Регистрация: 01.11.2011
Сообщений: 6,881
25.03.2014, 12:01 13
Цитата Сообщение от Zumuist Посмотреть сообщение
Чтоб как -то через эту функцию реализовывалось.
C++
1
2
3
4
5
6
7
8
9
bool ZU::store()
{
    FILE *f;
    if ((f=fopen("f1.txt","wt"))==NULL)
   {
        return false;
   }
   fprintf ( f,"данные_класса %s\n%d\n", Edit1->Text, Edit2->Text.ToIntDef(0) );
   fclose(f);
1
2 / 2 / 0
Регистрация: 23.09.2013
Сообщений: 150
25.03.2014, 13:16  [ТС] 14
А В кнопку что прописать? Чтоб добавлялось, при нажатии. ?
0
Почетный модератор
Эксперт С++
5836 / 2843 / 390
Регистрация: 01.11.2011
Сообщений: 6,881
25.03.2014, 13:30 15
Zumuist, вы понимаете, что мы сейчас лепим горбатое неведомое чудовище? С восьмиугольным телом. Пожирающее кровь. Сишные методы сочленяются с борландовыми являя миру безумие.

Ну а на самом деле, чтобы четко ответить на ваш вопрос вы должны еще показать, как вы создаете экземпляр класса. Является ли он членом формы? Как вообще с ним происходит работа?
Просто так костыль подставить здесь уже не получится.
1
2 / 2 / 0
Регистрация: 23.09.2013
Сообщений: 150
25.03.2014, 14:10  [ТС] 16
В общем дело такое.
Нужно сделать программу в которой реализована иерархия классов.
Реализовать файловый ввод вывод и вывод данных на ЭКРАН.

Данные (элементы класса) вводятся с клавиатуры через текстовые поля, нажимаем кнопку "Записать" и введённые данные сохраняются в текстовый файл.

При нажатии на кнопку "Вывести" данные из текстового файла выводятся на экран например в Мемо.

Я написал иерархию класса:
Базовый класс ЗУ (Запоминающие устройства)
О него два производных класса ЗУ1 И ЗУ2
От каждого класса ещё по два производных класса.

Дак вот как правильно реализовать файловый ввод вывод, что и где пописать. помогите пож-ста.
В с++ только начал изучать, а курсовую сдавать надо.


Код представлен ниже. (То ,что сделано на данный момент)
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
//---------------------------------------------------------------------------
 
#include <vcl.h>
#include <stdio.h>
#include "f1.txt"
#include <string.h>
#include <io.h>
#include <sys/stat.h>
#pragma hdrstop
 
#include "Unit1.h"
TStringList*List= new TStringList;
AnsiString SFile="f1.txt";
 
class  ZU      //базовый класс Запоминающие уст-ва
{
public:
   ZU();
   ZU (char*nm, int n, int v);
   bool store();
 
 protected:
    char nm [200]; // наименование ЗУ
    int n;  // номер
    int v; // объём
 };
bool ZU::store()
{
    FILE *f;
    if ((f=fopen("f1.txt","wt"))==NULL)
   {
   ShowMessage("Данные записаны");
        return false;
   }
   fprintf (f,"данные_класса %s\n%d\n",this->nm,this->n, this->v);
   fclose(f);
 
   return true;
};
 
 
 
  class ZU1: public ZU  //  кл.Внешняя память, наследник базового класса
 {
 public:
 ZU1();
 ZU1(char*nm, int n, char*ne );
  bool store();
 
 protected:
 char ne[10]; // неэнергозависимая
 };
 bool ZU1::store()
    {
    FILE *f;
    if ((f=fopen("f1.txt","wt"))==NULL)
   {
   ShowMessage("Данные записаны");
        return false;
   }
   fprintf (f,"данные_класса %s\n%d\n",this->ne);
   fclose(f);
   return true;
};
 
  class ZU2: public ZU // кл.Внутренняя память, наследник базового класса
  {
  public: ZU2();
 ZU2(char*nm, int n, char*e );
 ~ZU2(){}
 bool store();
 void print() const;
 
 protected:
 char e[10]; // энергозависимая
 };
  bool ZU2::store()
    {
    FILE *f;
    if ((f=fopen("f1.txt","wt"))==NULL)
   {
   ShowMessage("Данные записаны");
        return false;
   }
   fprintf (f,"данные_класса %s\n%d\n",this->n);
   fclose(f);
   return true;
  };
 
  class flash: public ZU1 // кл.флешки, наследник кл. внешняя память
  {
  public: flash ();
  flash (char*nm, int n, int v,char*ne, char*u );
  ~flash(){}
  bool store();
  void print () const;
   protected:
   char u[5];// тип USB
   };
   bool flash ::store()
    {
    FILE *f;
    if ((f=fopen("f1.txt","wt"))==NULL)
   {
   ShowMessage("Данные записаны");
        return false;
   }
   fprintf (f,"данные_класса %s\n%d\n",this->u);
   fclose(f);
   return true;
  };
 
   class cd: public ZU1 // кл.CD, наследник кл. внешняя память
   {
   public: cd ();
   cd(char*nm, int n, int v,char*ne, char*t);
   ~cd(){}
   bool store();
   void print() const;
   protected:
   char t[10]; // тип CD
   };
   bool cd ::store()
    {
    FILE *f;
    if ((f=fopen("f1.txt","wt"))==NULL)
   {
   ShowMessage("Данные записаны");
        return false;
   }
   fprintf (f,"данные_класса %s\n%d\n",this->t);
   fclose(f);
   return true;
  };
 
 
   class ram: public ZU2 // кл. ОЗУ, наследник кл.Внутренняя память
   {
   public: ram(){}
   ram(char*nm, int n, int v, char*e, float*ch);
   ~ram(){}
   bool store();
   void print() const;
   protected:
   float ch[10]; // частота ОЗУ
   };
   bool ram ::store()
    {
    FILE *f;
    if ((f=fopen("f1.txt","wt"))==NULL)
   {
   ShowMessage("Данные записаны");
        return false;
   }
   fprintf (f,"данные_класса %s\n%d\n",this->ch);
   fclose(f);
   return true;
  };
 
   class hdd: public ZU2 // кл. HDD, наследник кл.Внутренняя память
   {
   public: hdd(){}
   hdd(char*nm, int n, int v,char*e, char*i);
   ~hdd(){}
   bool store();
    void print() const;
   protected:
   char i[10];// тип интерфейса SATA
   };
   bool hdd ::store()
    {
    FILE *f;
    if ((f=fopen("f1.txt","wt"))==NULL)
   {
   ShowMessage("Данные записаны");
        return false;
   }
   fprintf (f,"данные_класса %s\n%d\n",this->i);
   fclose(f);
   return true;
  };
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
 
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
 
 
 
 
 
 
 
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
 {
 
Memo1->Lines->LoadFromFile("D:\\f1.txt");
 
};
 
 
 
 
}
//---------------------------------------------------------------------------
 
 
 
 
 
 
 
 
 
 
 
 
 
 
void __fastcall TForm1::Button4Click(TObject *Sender)
{
Edit1->Clear();
Edit2->Clear();
Edit3->Clear();
Edit4->Clear();
Edit5->Clear();
Edit6->Clear();
Edit7->Clear();
Memo1->Clear();
}
//---------------------------------------------------------------------------
 
 
 
 
 
 
void __fastcall TForm1::Button2Click(TObject *Sender)
{
TStringList*List= new TStringList;
 
 
List->Add( Edit2->Text );
List->Add( Edit1->Text );
List->Add( Edit3->Text );
List->Add( Edit4->Text );
List->Add( Edit5->Text );
List->Add( Edit6->Text );
List->Add( Edit7->Text );
 
List->SaveToFile("D:\\f1.txt");
delete List;
}
//---------------------------------------------------------------------------
0
Миниатюры
Запись данных класса в файл  
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.03.2014, 14:10

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Запись данных класса в бинарный файл
У меня был просто ввод-вывод в файл, но надо бинарный и мне выдает ошибку: &quot;error 'class...

Запись класса в файл
Доброго времени суток! Вот появился тупик, есть базовый класс и производные классы class Figure{...

Запись класса в файл
О великие программисты работающие в среде Qt спасите помогите. Тут такое дело у меня есть класс...

Запись класса в файл
Приветствую. Я хочу записать битовую форму класса, но столкнулся с делемой. Насколько мне...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.