создать приложение для записи информации в файл произвольного доступасоздать приложение для записи информации в файл произвольного доступа, изучить способы проверки входных данных с использованием компонентов 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; } //---------------------------------------------------------------------------Упакованные файлы проекта |