Опубликован: 09.09.2008 | Уровень: специалист | Доступ: платный | ВУЗ: Российская международная академия туризма
Лекция 3:

Текстовой формат данных для Smartdevice. Ввод-вывод в текстовые файлы

< Лекция 2 || Лекция 3: 123 || Лекция 4 >

Шаг 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


Рис. 2.4.
< Лекция 2 || Лекция 3: 123 || Лекция 4 >
jo jojo
jo jojo
Нидерланды
Ярославй Грива
Ярославй Грива
Россия, г. Санкт-Петербург