Второй пример выполнения задания

 

1) Тема и название лабораторной работы:

Работа с текстовыми файлами.

Чтение и запись информации из файла/в файл с помощью классов

StreamReader, StreamWriter.

2) Фамилия, имя студента, номер группы, номер варианта:

Иванов И., БИН1405, вариант 13.

3) Задание на разработку проекта:

Создайте проект, который вводит из второго файла строку b, построчно вводит все строки первого файла и отображает их на форме, а затем обрабатывает, удаляя из каждой строки первого файла все символы, расположенные на нечетных позициях строки b, используя ранее разработанную для лабораторной работы 9 процедуру Обработка(). Результат обработки необходимо отобразить на форме и сохранить в новом (третьем) текстовом файле. Работу с текстовыми файлами осуществить с помощью классов StreamReader, StreamWriter.

4) Формализация и уточнение задания:

Формализация не требуется.

5) Элементы, разрабатываемого проекта:

5.1) Форма интерфейса приведена на рис. 4.10.7-4.

Для построчного вывода на форму первого текстового файла, удобно использовать элемент управления ListBox. Для вывода на форму нового третьего текстового файла, состоящего из нескольких строк, которые будут прочитаны целиком в одну строку, используется текстовое поле TextBox4, для которого свойство Multiline обязательно должно быть установлено в состояние True и свойство ScrollBars в состояние Vertical для обеспечения возможности вертикальной прокрутки содержимого этого текстового поля. Текстовое поле TextBox3 для вывода на форму только одной строки из второго файла может оставаться со значением свойства Multiline, равным False, также, как и три других текстовых поля TextBox1 и TextBox5 и TextBox6 для ввода путей к текстовым файлам.

 

Рис. 4.10.7-4. Форма проекта Проект 10-2

 


5.2) Таблица свойства объектов формы:

Свойства объектов разработанной формы установите

самостоятельно.

5.3) Схема алгоритма решаемой задачи:

Схемы отдельных алгоритмов представлены в Теме 4.10.

5.4) Программный код проекта:

Программный код проекта представлен на рис. 4.10.7-5.

Процедура Resh() с помощью класса StreamReader построчно считывает содержимое 1 файла, удаляет из строки нужные символы процедурой Обработка() и дописывает обработанную строку в новый 3 файл с помощью класса StreamWriter. Процедура readfile() с помощью класса StreamReader считывает содержимое текстового файла целиком в одну строку. Так как разработанный интерфейс имеет не одну, а несколько кнопок, которые работают со строкой b, содержащей 2 файл, то эта строка должны быть доступна нескольким событийным процедурам, и поэтому в программном коде ее необходимо сделать глобальной (видимой для всех процедур), и объявить в начале программы, до описания процедур.

 

Option Strict On Option Explicit On Imports System.IO Public C lass Form1 Dim b As String 'Глобальная строка b из второго файла 'Процедура построчного чтения из 1 файла и записи в 3 файл Sub Resh(ByVal filename1 As String, _ ByVal filename3 As String, _ ByVal b As String, ByRef L As ListBox) 'создание потока для чтения из исходного файла1 Dim Rf As New StreamReader(filename1) 'создание потока для записи в другой текстовый файл 'Значение True 2-го параметра означает, что будет 'производиться дозапись в конец файла Dim wf As New StreamWriter(filename3, True) Dim a As String Try Do While Not Rf.EndOfStream() 'пока не достигнут конец потока a = Rf.ReadLine() 'чтение строки а из 1 файла L.Items.Add(a) 'вывод прочитанной строки в ListBox Обработка(b, a) 'удаление символов из строки a wf.WriteLine(a) 'запись обработ. строки в новый файл Loop Catch ex As Exception MsgBox("Невозможно прочитать данные из файла") Finally wf.Flush():Rf.Close(): wf.Close() End Try End Sub 'Процедура чтения из текстового файла целиком в одну строку Sub readfile(ByVal filename As String, _ ByRef b As String) 'создание потока для чтения из текстового файла Dim Rf As StreamReader Rf = New StreamReader(filename) Try b = Rf.ReadToEnd() 'чтение текста из файла в b Rf.Close() 'закрытие потока Catch ex As Exception MsgBox("Невозможно прочитать данные из файла") End Try End Sub 'Процедура обработки одной строки (удал. символов из строки) Sub Обработка(ByVal b As String, ByRef a As String) Dim d, m, i, j As Short m = CShort(a.Length) 'длина строки a d = CShort(b.Length ) 'длина строки b 'переборнечетных символов строки b For i = 0 To CShort(d-1) Step 2 j = 0 Do While j < m 'перебор всех символов строки a If a.Substring(j, 1) = b.Substring(i, 1) Then a = a.Remove(j, 1) 'пока симв.совпад.-удаляем из a m = CShort(m - 1) 'уменьшаем длину строки a Else j = CShort(j + 1) 'переход к след.символу строки a End If Loop Next i End Sub Function vvod(ByVal T As TextBox) As String Return T.Text End Function Sub vivod(ByVal z As String, ByRef t As TextBox) If z.Length <> 0 Then t.Text = z Else t.Text = "Все удалено" End If End Sub 'Кнопка чтения второй строки из второго файла Private Sub Button1_Click(ByVal sender As System.Object,_ ByVal e As System.EventArgs) Handles Button1.Click Dim ПутьФ2 As String = "" ПутьФ2 = vvod(TextBox5) readfile(ПутьФ2, b) vivod(b, TextBox3) End Sub 'Кнопка чтения 1 файла и запись обработанных строк 'в третий файл Private Sub Button3_Click(ByVal sender As System.Object,_ ByVal e As System.EventArgs) Handles Button3.Click Dim ПутьФ3 As String = "" Dim ПутьФ1 As String = "" ПутьФ1 = vvod(TextBox1) ПутьФ3 = vvod(TextBox6) Resh(ПутьФ1, ПутьФ3, b, ListBox1) End Sub 'Кнопка чтения нового(третьего) файла 'и вывод его на форму Private Sub Button2_Click(ByVal sender As System.Object,_ ByVal e As System.EventArgs) Handles Button2.Click Dim ПутьФ3 As String = "" ПутьФ3 = vvod(TextBox6) Dim Rez As String = "" readfile(ПутьФ3, Rez) vivod(Rez, TextBox4) End Sub Private Sub Button6_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button6.Click End End Sub End Class

 

Рис.4.10-5. Программный код проекта Проект 10-2

6) Результаты выполнения проектов:

Результаты выполнения проекта приведены на рис. 4.10.7-6.

 

 

Рис. 4.10.7-6. Результаты выполнения проекта Проект 10-2

7) Доказательство правильности работы программы:

Из всех строк исходного первого файла удалены символы, стоящие на 1 и 3 позициях строки b из второго файла (т.е. удалились буквы a и d), причем из третьей строки удалены все символы и в измененный файл записана пустая строка.

 

Контрольные вопросы

 

1) Что такое файл?

2) Какие классы используются для работы с файлами?

3) Каким образом можно обработать ошибки времени выполнения?

4) Что такое потоковый доступ к файлам?

5) Какая функция открывает, и, какая функция закрывает текстовый файл?

6) Какие функции осуществляют операции чтения и записи?

 


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: