Студопедия КАТЕГОРИИ: АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Инициализация данных программы filer
Теперь необходимо поместить строки в четыре символьных массива. Для заполнения символьных массивов в методеOnInitDialog()мы воспользуемся стандартной функцией языка С strcpy(): BOOL CFilerDlg::OnInitDialog() { CDialog::OnInitDialog(), strcpy(OutString[0], "Учимся "); strcpy(OutString[1], "работать "); strcpy(OutString[2], "c "); strcpy(0utString[3], "файлами "); } Затем добавьте в главное диалоговое окно необходимые управляющие элементы — два текстовых поля и кнопку. Для кнопки будет coздaнметод обработки. Kpoме тoro, свяжите переменную m_text1с верхним текстовым полем, а переменную m_text2 - с нижним. Сохраненная на диске строка заносится в верхнее диалоговое поле в следующем фрагменте метода OnInitDialog: BOOL CFilerDlg::OnInitDialog() { CDialog::OnInitDialog(); strcpy(OutString[0]. "Учимся "); strcpy(0utString[1], "работать "); strcpy(0utString[2], "с "); strcpy(0utString[3]. "файлами "); m_text1 = CString(OutSring[0]) + CString(OutString[1]) +CString(OutString[2]) + CString(OutString[3]); UpdateData(false); } Когда пользователь нажимает кнопку Прочесть и записать файл, наша программа должна записать строку в файл. Давайте посмотрим, как это делается. Запись в файл Для того, чтобы записать на диск четыре элемента символьного массива, с OutString[0] по OutString[3], мы воспользуемся классом CFileи создадим в обработчике сообщения о нажатии кнопки OnButton1() объект OutFileкласса CFile: void CFilerDlg::OnButton1() { CFile OutFile("data.dat", CFile::modeCreate | CFile::modeWrite); } Методы класса CFile перечислены в табл.10.1. Таблица 10.1. Методы класса CFile
Первая строка приведенного выше фрагмента создает файл data.dat и открывает его для записи. Обратите внимание на константы, передаваемые конструктором CFile: CFile::modeCreate | CFile::modeWrite. ПрефиксCFile::означает, что константы принадлежат классу CFile. Они, как и прочие константы в конструкторе CFile, могут объединяться оператором Visual C++. Передавая конструктору константы CFile::modeCreate | CFile::modeWrite мы сообщаем классу CFile о своем желании создать новый файл и открыть его. Список констант, определяющих режим открытия файла в конструкторе CFile , приведен в табл. 10.2. Таблица 10.2
Файл открыт и готов к записи. Мы воспользуемся оператором цикла, в котором запишем в него четыре символьных строки с помощью метода Write() класса CFile: void CFilerDIg::OnButton1() { CFile OutFile("data.dat", CFile: :modeCreate | CFile: :modeWrite); for(int loop_index = 0; loop_index < 4; loop_index++){ OutFile.Write(OutString[loop_index], 20); } OutFile.Close(); } При таком подходе каждая строка интерпретируется как отдельная запись, а разбиение данных на записи облегчает доступ. В конце приведенного выше фрагмента мы закрываем файл методом Close () класса CFile. На этом процесс записи завершен — на диске появляется созданный и заполненный файл data.dat. Теперь необходимо прочитать его содержимое в программе. Чтение файла Для чтения символьных строк из файла data.dat мы воспользуемся методом Read( )класса CFile. Начнем с открытия файла и создания нового объекта InFileкласса CFile, который открывается в режиме чтения: void CFilerDIg::OnButton1() { CFile OutFile("data.dat", CFile: :modeCreate | CFile: :modeWrite); for(int loop_index = 0; loop_index < 4; loop_index++){ OutFile.Write(OutString[loop_index], 20); } OutFile.Close(); CFile InFile("data.dat", CFile::modeRead); } Далее мы перебираем в цикле четыре символьные строки файла. Длина каждой из них равна 20 символам, поэтому мы можем воспользоваться методом Seek() классаCFile для установки файлового указателя в начало каждой последующей строки: void CFilerDlg::OnButton1() { CFile OutFile("data.dat", CFile: :modeCreate | CFile: :modeWrite); for(int loop_index = 0; loop_index < 4; loop_index++){ OutFile.Write(OutString[loop_index], 20); } OutFile.Close(); CFile InFile("data.dat", CFile::modeRead); for(loop_index == 0; loop_.index < 4; loop_index++){ InFile.Seek(20 * loop_index. CFile::begin); } } |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2018-04-12; просмотров: 336. stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда... |