Текстовой формат данных для Smartdevice. Ввод-вывод в текстовые файлы
Шаг 8. Создаем функцию записи структуры данных в файл
private void file_write() {// задаем поток StreamWriter fin_out; try {// проверяем доступность файла fin_out=new StreamWriter(file_name); } catch(IOException exc) { MessageBox.Show ("Невозможно открыть файл.","Ошибка"); return; } // считываем данные текстовых полей формы foreach (Control t in this.Controls) { if (t is TextBox) // условие: если элемент формы – текстовое поле fin_out.Write(t.Text+"\r\n"); // пишем значения полей в файл } fin_out.Close(); // закрываем файл
На этом шаге можно закрыть функцию фигурной скобкой "}" и откомпилировать программу. При запуске откомпилированной программы, активизировав опцию меню "Сохранить", на диске должен быть создан файл price.txt, содержащий значения текстовых полей формы программы.
Шаг 9. Добавляем в функцию file_write() данные состояния флажков checkbox
Перед закрывающей функцию file_write() фигурной скобкой пишем:
//Теперь открываем файл для добавления try{ fin_out=new StreamWriter(file_name,true); } catch(IOException exc) { MessageBox.Show ("Невозможно открыть файл.","Ошибка"); return; } // пишем состояние всех восьми флажков string h1=this.checkBox1.CheckState.ToString(); fin_out.Write(h1.ToString()+"\r\n"); // дописываем в файл string h2=this.checkBox2.CheckState.ToString(); fin_out.Write(h2.ToString()+"\r\n"); string h3=this.checkBox3.CheckState.ToString(); fin_out.Write(h3.ToString()+"\r\n"); string h4=this.checkBox4.CheckState.ToString(); fin_out.Write(h4.ToString()+"\r\n"); string h5=this.checkBox5.CheckState.ToString(); fin_out.Write(h5.ToString()+"\r\n"); string h6=this.checkBox6.CheckState.ToString(); fin_out.Write(h6.ToString()+"\r\n"); string h7=this.checkBox7.CheckState.ToString(); fin_out.Write(h7.ToString()+"\r\n"); string h8=this.checkBox8.CheckState.ToString(); fin_out.Write(h8.ToString()+"\r\n"); // считываем данные текстовых полей 1-й закладки foreach (Control t1 in this.tabPage1.Controls) { if (t1 is TextBox) fin_out.Write(t1.Text.ToString()+"\r\n"); } // считываем данные текстовых полей 2-й закладки foreach (Control t2 in this.tabPage2.Controls) { if (t2 is TextBox) fin_out.Write(t2.Text+"\r\n"); } fin_out.Close();// закрываем файл и выводим сообщение MessageBox.Show("Данные сохранены в файле "+file_name,"Запись на диск"); } // закрывающая фигурная скобка
Шаг 10. Дописываем функцию file_read()
Теперь, когда данные в файле price.txt структурированы, перед закрывающей функцию file_read() фигурной скобкой пишем:
// Считываем значения из файла StreamReader fstr_in=new StreamReader(fin); string s="0"; // символ в строке int i=0; // номер строки //в переменную s считываются все символы, пока не кончится строка while((s=fstr_in.ReadLine())!=null) { i=i+1; if (i = = 1){this.textBox1.Text=s;} // Марка автомобиля в textBox1 if (i = = 2) {// первый флажок в checkBox1 if (s = = "Unchecked") { this.checkBox1.Checked=false;} else {this.checkBox1.Checked=true;} } if (i = = 3) {// второй флажок if (s = = "Unchecked") { this.checkBox2.Checked=false;} else {this.checkBox2.Checked=true;} } if (i = = 4) {// третий флажок if (s = = "Unchecked") { this.checkBox3.Checked=false;} else { this.checkBox3.Checked=true;} } if (i = = 5) {// четвертый флажок if (s = = "Unchecked") { this.checkBox4.Checked=false;} else { this.checkBox4.Checked=true;} } if ( i = = 6) {// пятый флажок if (s = = "Unchecked") { this.checkBox5.Checked=false;} else { this.checkBox5.Checked=true;} } if (i = = 7) {// шестой флажок if (s = = "Unchecked") { this.checkBox6.Checked=false;} else { this.checkBox6.Checked=true;} } if (i = = 8) {// седьмой флажок if (s = = "Unchecked") {this.checkBox7.Checked=false;} else { this.checkBox7.Checked=true;} } if ( i = = 9) {// восьмой флажок if (s = = "Unchecked") { this.checkBox8.Checked=false;} else { this.checkBox8.Checked=true;} }
/* Заносим данные в текстовые поля. Отметим, что порядок расположения и обозначения полей зависит от последовательности конструирования графического интерфейса. Поэтому, в нашем примере, обозначения могут не совпадать с автоматически создаваемыми элементами форм редактором Visual Studio */
if (i = = 10) {this.textBox14.Text=s;} if (i = = 11) {this.textBox13.Text=s;
/* преобразуем текстовой формат поля в числовой и заносим значение в переменную цены комплектации автомобиля */
comp_acc=int.Parse(this.textBox13.Text); } if (i = = 12) {this.textBox4.Text=s;} if (i = = 13) {this.textBox3.Text=s;} if (i = = 14) {this.textBox2.Text=s;} if (i = = 15) {this.textBox12.Text=s;} if (i = = 16) {this.textBox11.Text=s;} if (i = = 17) {this.textBox10.Text=s;} if (i = = 18) {this.textBox9.Text=s;} if (i = = 19) {this.textBox8.Text=s;} if (i = = 20) {this.textBox7.Text=s;} if (i = = 21) {this.textBox6.Text=s;} if (i = = 22) {this.textBox5.Text=s;} }// конец цикла fstr_in.Close(); return; } // закрывающая функцию фигурная скобка
Теперь следует удалить или переименовать файл price.txt, откомпилировать и запустить программу. В textBox13 нужно внести цифру, чтобы избежать генерации исключения операционной системой, заполнить остальные поля и сохранить файл. Структуру (одно поле) и данные (22 записи) файла можно просмотреть в режиме блокнота – рис.2.4