Winni Назад создать приложение для записи информации в файл произвольного доступа

создать приложение для записи информации в файл произвольного доступа, 
изучить способы проверки входных данных с использованием компонентов 
MaskEdit, OpenDialog, SaveDialog..

Текст файла .cpp:
//----------------  Unit1.cpp  ----------------------------------

#include <vcl.h>
#include <fstream.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;

	struct Notes
	{
	 char Name[60];      // Фамилия, имя, отчество
	 char Pol;                // Пол
	 char Dat[9];           //  Дата рождения
	 char Phone[9];      // Телефон
	 char Adr[60];         // Адрес
	 int Kod;                 // Код
};
char * fn="";


//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::btnOpenClick(TObject *Sender)
{
	OD1->Execute();                     // Активизировать диалог "Открыть файл"
	fn=OD1->FileName.c_str();           // в fn  записать указатель на имя файла
	Label6->Caption= "Открыт: " +OD1->FileName;
                                            // вывести имя файла в компоненте
        // Label6
	// Сделать кнопки "Считать", "Добавить" активными, а "Сохранить в файле"
        // неактивной
	btnRead->Enabled=true;
	btnAdd->Enabled=true;
	btnSave->Enabled=false;

}
//---------------------------------------------------------------------------
void __fastcall TForm1::btnReadClick(TObject *Sender)
{
	  Memo1->Clear();     // Очистить Мемо
	  Notes Note1;
	  // открыть файл для чтения и записи, в двоичном режиме
	  fstream file(fn, ios::binary | ios::in | ios::out);
	  char str[80];
	  // установить указатель на начало файла
	  file.seekg(0);
	  // пока не конец файла, читать запись в переменную Note1
	  while (!file.read((char*)&Note1, sizeof(Notes)).eof())
	  {
	  // Сформировать строку str из переменной Note1
	   sprintf(str,"Имя: %s\t Дата рождения:%s\t Пол:%c\t Тел.:%s\t Адрес:%s\tКод:%d",
             Note1.Name,Note1.Dat,Note1.Pol,Note1.Phone,Note1.Adr,Note1.Kod);
	  // Добавить строку str в Memo1
	   Memo1->Lines->Add(str);
	  }
	file.close();   // Закрыть файл

}
//---------------------------------------------------------------------------
void __fastcall TForm1::btnAddClick(TObject *Sender)
{
 Notes Note1;

  // Записать значения введенные пользователем в Note1
 strcpy(Note1.Name,edFio->Text.c_str());
 if (RadioGroup1->ItemIndex==1)
  Note1.Pol='М';
  else
  Note1.Pol='Ж';

 strcpy(Note1.Dat,MaskEdit1->Text.c_str());
 strcpy(Note1.Phone,MaskEdit2->Text.c_str());
 strcpy(Note1.Adr,edAdres->Text.c_str());
 Note1.Kod=edKod->Text.ToInt();

     // открыть файл в двоичном режиме для добавления
     ofstream ofile(fn,ios::app | ios::binary);
    ofile.write((char*)&Note1, sizeof(Notes));
    ofile.close();   // закрыть файл
}
//---------------------------------------------------------------------------
void __fastcall TForm1::btnSaveClick(TObject *Sender)
{
        SD1->Execute();  // Активизировать диалог "Сохранить файл"
        fn=SD1->FileName.c_str();
        // в fn  записать указатель на имя файла
	Label6->Caption= "Сохраняю в файле: "+SD1->FileName;
           // Вывести имя файла при помощи метки Label6

	 Notes Note1;
	// Записать значения введенные пользователем в Note1
	strcpy(Note1.Name,edFio->Text.c_str());
	 if (RadioGroup1->ItemIndex==1)
	  Note1.Pol='М';
	  else
	  Note1.Pol='Ж';
	 strcpy(Note1.Dat,MaskEdit1->Text.c_str());
	 strcpy(Note1.Phone,MaskEdit2->Text.c_str());
	 strcpy(Note1.Adr,edAdres->Text.c_str());
         Note1.Kod=edKod->Text.ToInt();

	// открыть файл
	ofstream ofile(fn,ios::binary);
	// записать Note1 в файл
	ofile.write((char*)&Note1, sizeof(Notes));
	ofile.close();   // закрыть файл

	// Сделать кнопки "Считать", "Добавить" активными, а "Сохранить в файле"
	// неактивной
	btnRead->Enabled=true;
	btnAdd->Enabled=true;
	btnSave->Enabled=false;
}
//---------------------------------------------------------------------------
Упакованные файлы проекта
Rambler's Top100
Hosted by uCoz