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

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

Вернуться   Форум программистов > C/C++ программирование > C++ Builder
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.04.2012, 14:23   #1
terredis
Пользователь
 
Регистрация: 07.12.2011
Сообщений: 32
По умолчанию Работа с файлами

нужно написать структуру, которая хранит имя, фамилию, отчество и дату рождения студента, который выполнил задание.
Структуру я написал, но вот как сохранять и читать данные я не разобрался(как должен выглядеть код?0
вот мой код (в данном коде в файле txt сохраняются какие-то иероглифы)
Код:

#include <vcl.h>
#pragma hdrstop
#include <stdio.h>
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{

}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
i++;
  t[i].fam=Edit1->Text;
  t[i].name=Edit2->Text;
  t[i].otches=Edit3->Text;
  t[i].year=StrToInt(Edit4->Text);

  if (CheckBox1->Checked==true)
   t[i].p1=true;
  else
   t[i].p1=false;

   if (CheckBox2->Checked==true)
   t[i].p2=true;
  else
   t[i].p2=false;

   if (CheckBox3->Checked==true)
   t[i].p3=true;
  else
   t[i].p3=false;
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button2Click(TObject *Sender)
{ FILE*fi;
  fi=fopen("text.txt","w");
  if (fi==0)
  {
   Application->MessageBoxA ("Äàííûå îòñóòñòâóþò", "Îøèáêà!", mbYes);
  }
  for(int i=0;i<10;i++)
  if (t[i].p1==true || t[i].p2==true || t[i].p3==true)
  Memo1->Lines->Add(t[i].fam+" "+t[i].name+" "+t[i].otches+" "+t[i].year);
  fwrite  (&t[i],sizeof(t[i]),1,fi);
  fclose(fi);
}
описание структуры:
struct test {
AnsiString fam;
AnsiString name;
AnsiString otches;
int year;
bool p1;
bool p2;
bool p3;
};
test t[10];
int i=-1;
terredis вне форума Ответить с цитированием
Старый 07.04.2012, 16:22   #2
terredis
Пользователь
 
Регистрация: 07.12.2011
Сообщений: 32
По умолчанию

Люди! АУ) Кто-нибудь сможет помочь?
terredis вне форума Ответить с цитированием
Старый 07.04.2012, 18:38   #3
nick42
Форумчанин
 
Аватар для nick42
 
Регистрация: 14.10.2011
Сообщений: 267
По умолчанию

Во первых..
Код:
  Memo1->Lines->Add(t[i].fam+" "+t[i].name+" "+t[i].otches+" "+IntToStr(t[i].year));
а во вторых, слишком сложно с файлом. С мэмо все проще гораздо:
Код:
  Memo1->Lines->SaveToFile(".\\text.txt");
и в третьих, - с логическими переменными можно короче:
Код:
   t[i].p3 = CheckBox3->Checked ;

Последний раз редактировалось nick42; 07.04.2012 в 18:42.
nick42 вне форума Ответить с цитированием
Старый 07.04.2012, 20:46   #4
terredis
Пользователь
 
Регистрация: 07.12.2011
Сообщений: 32
По умолчанию

Спасибо, за помощь)
terredis вне форума Ответить с цитированием
Старый 07.04.2012, 21:07   #5
terredis
Пользователь
 
Регистрация: 07.12.2011
Сообщений: 32
По умолчанию

а если записывать данные так
Код:
Memo1->Lines->SaveToFile(".\\text.txt");
можно ли их прочитать в программе?(как с помощью fread())
terredis вне форума Ответить с цитированием
Старый 07.04.2012, 21:24   #6
nick42
Форумчанин
 
Аватар для nick42
 
Регистрация: 14.10.2011
Сообщений: 267
По умолчанию

-можно и fread, и Memo1->Lines->LoadFromFile(".\\text.txt");
nick42 вне форума Ответить с цитированием
Старый 07.04.2012, 21:29   #7
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Цитата:
в файле txt сохраняются какие-то иероглифы)
Меняй кодировку с UTF8 на WINDOWS.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 07.04.2012, 21:31   #8
terredis
Пользователь
 
Регистрация: 07.12.2011
Сообщений: 32
По умолчанию

можно подробнее где её сменить?
terredis вне форума Ответить с цитированием
Старый 07.04.2012, 21:41   #9
terredis
Пользователь
 
Регистрация: 07.12.2011
Сообщений: 32
По умолчанию

Цитата:
Меняй кодировку с UTF8 на WINDOWS.
сменил, но все равно какие-то иероглифы(

Последний раз редактировалось terredis; 07.04.2012 в 21:50.
terredis вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с файлами в С++ Speakon Общие вопросы C/C++ 3 20.11.2011 23:31
работа с файлами as1212 Помощь студентам 2 15.11.2011 23:28
Работа с файлами as1212 Помощь студентам 0 13.11.2011 21:34
Работа с файлами С+++ Progsenya Общие вопросы C/C++ 5 22.08.2010 15:15