Текстовой формат данных для Smartdevice. Ввод-вывод в текстовые файлы
Для доступа к данным в текстовом файле используется поставщик OLE DB Jet, который загружает содержимое текстового файла в локальную таблицу и отображает ее содержимое в специально предназначенном элементе экранной формы. Локальные таблицы могут быть организованы по- разному, поэтому невозможно определить все характеристики текстового файла через строку подключения. Для решения этой проблемы используется дополнительный, расположенный в том же каталоге, что и текстовой файл, файл *.ini в котором отражается следующая информация о локальной таблице текстового файла:
- Имя файла:
- Формат файла;
- Имена полей, их длина и тип данных;
- Кодировка символов;
- Специальные преобразования типов данных
Отметим, что в строке (записи) файла *.ini "Формат файла" указываются разделители полей: запятая; нестандартный разделитель определенный пользователем; фиксированная длина поля или табулятор.
Что касается элементов экранных форм, предназначенных для отражения данных, то их существует несколько вариантов, привязку данных к которым рассмотрим ниже.
Ввод-вывод в текстовые файлы
Задача темы: изучить методику и получить навыки в разработке функциональности приложений, использующих загрузку данных из текстового файла в форму для редактирования, изменение и сохранение данных в текстовом файле.
Разработка: Приложение "Калькулятор цены автомобиля" для автоматического подсчета цены автомобиля в зависимости от комплектации.
Состав выполняемых функций:
- Файловые операции: открыть, сохранить, сохранить как, закрыть
- Алгоритмы: калькулятор цены автомобиля, редактор цен
- Информационно-справочные: О программе
Наращивание функциональности не предусматривается.
Защита данных предусматривается только от неквалифицированных действий пользователей.
В качестве входных данных используется отдельный текстовой файл по каждой марке автомобиля, структура данных включает одно поле, набор из 22 записей, тип данных определяется программно. Выходные данные программы – графическое отображение результатов в виде набора текстовых полей экранных форм для SmartDevice.
Шаг 1. Структура данных
В программе используется фиксированный набор данных текстовых полей (textBox), которые имеют следующие обозначения (label):
- Владелец автомобиля
- Телефон владельца
- Цена владельца
- Комплектация
- Базовая цена
- Усилитель руля
- Кондиционер
- Тонированные стекла
- Дисковые тормоза
- Сигнализация
- Фаркоп
- Противотуманные фары
- Диски легкосплавные
- Марка автомобиля
Шаг 2. Разработка графического интерфейса
Используется только одна форма Form1 (свойство Text = "ADO.NET и доступ к данным" . Калькулятор). В форме, в связи с ограниченностью экрана, размещается набор закладок tabControl1 с двумя закладками tabPage1 и tabPage2. Примерный дизайн закладок приведен на рис. 2.1 и 2.2
На закладке "Комплектация" (рис.2.1) размещаются 8 флажков ( checkBox ) маркировки состава комплектующих (изначально свойство флажка Checked = False ) и кнопка (button) "ОК", видимая только в режиме "Редактора" (изначально свойства кнопки Visible = False, Text = OK ).
Невидимыми элементами управления графического интерфейса являются Диалоги открытия (openFileDialog1) и сохранения (saveFileDialog1) файла, Главное меню (mainMenu1), горизонтальная линейка которого имеет два пункта – "Файл" и "О программе" (видно на рис. 2.1 и 2.2). Набор опций меню "Файл" включает: Открыть, Сохранить, Сохранить как, Редактор цен и Выход. Пункт меню "О программе" опций не имеет.
Шаг 3. Расширяем состав системных библиотек
using System; using System.Drawing; using System.Collections; using System.Windows.Forms; using System.Data; // Добавляем библиотеку работы с файлами using System.IO;
Шаг 4. Включаем переменные для хранения результатов вычислений в public class Form1 : System.Windows.Forms.Form
string file_name; // переменная хранения имени файла с данными int appe_acc=0; // переменная редактируемой цены комплектации int base_acc=0; // переменная базовой цены автомобиля int comp_acc=0; // переменная цены комплектации автомобиля
Шаг 5. Загружаем данные из файла (по умолчанию)
public Form1() { // Required for Windows Form Designer support InitializeComponent(); file_name="price.txt"; // имя файла, загружаемого по умолчанию file_read(); // вызываем функцию чтения данных из файла }
Шаг 6. Создаем функцию чтения данных из текстового файла
private void file_read() { FileStream fin; try { /* если файл доступен для чтения, то определяем переменную, в которой задаем имя открываемого файла */ fin=new FileStream(file_name,FileMode.Open); } catch (IOException exc) { MessageBox.Show ("Невозможно открыть файл \n"+ file_name,"Ошибка"); return; }
На этом шаге можно закрыть функцию фигурной скобкой "}" и откомпилировать программу. При запуске откомпилированной программы, так как файл price.txt не существует, то должно срабатывать исключение IOException и выдаваться сообщение – рис.2.3
Шаг 7. Создаем процедуру сохранения файла
Опция "Сохранить" (в нашем примере - menuItem4_Click ) главного меню предназначена для сохранения данных в файле price.txt – создаем код процедуры:
private void menuItem4_Click(object sender, System.EventArgs e) { file_name="price.txt"; // задаем имя файла по умолчанию file_write(); // вызываем функцию записи данных в файл }