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

 

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

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

Чтение и запись информации из файла/в файл с помощью объекта My.Computer.FileSystem.

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

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

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

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

Результат обработки вышеприведенной задачи необходимо отобразить на форме и перезаписать в первый текстовый файл. Работу с текстовыми файлами осуществить с помощью объекта My.Computer.FileSystem.

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

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

 

 

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

5.1)Графический интерфейс пользователя:

Форма приложения представлена на рис. 4.10.7-1.

 

 

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

 

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

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

Определите, установите и сведите в табл. свойства объектов

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

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

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

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

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


 

Public Class Form1 'Глобальные строки Dim Str1 As String'строка с исходным первым файлом Dim Rez As String'строка с измененным первым файлом ' Процедура записи строки в файл. Sub Запись(ByVal ПутьФ As String, ByVal str1 As String) If (My.Computer.FileSystem.FileExists(ПутьФ)=True) Then If (MsgBox("Файл существует. Переписать?", _ MsgBoxStyle.YesNo Or MsgBoxStyle.Question, "Overwrite")_ <> MsgBoxResult.Yes) Then Exit Sub End If ' Сохраняем данные Try My.Computer.FileSystem.WriteAllText(ПутьФ, str1,False) Catch ex As Exception MsgBox("Файл не может быть записан на диск " & _ "из-за ошибки:" & vbCrLf & vbCrLf & ex.Message) End Try End Sub 'Процедура чтения данных из файла целиком в одну строку Sub Чтение(ByRef Str3 As String, ByVal filename As String) ' Открываем существующий файл и загружаем его в одну строку Try Str3 = My.Computer.FileSystem.ReadAllText(filename) Catch ex As Exception MsgBox("Файл не может быть открыт " & _ " из-за ошибки:" & vbCrLf & vbCrLf & ex.Message) 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 For i = 0 To CShort(d - 1) Step 2 'перебор нечетных симв. строки b 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 'Процедура решения задачи удаления символов из строк файла Sub Resh(ByVal b As String, ByVal s1 As String, _ ByRef s2 As String) Dim a As String Dim Stroki() As String'массив строк первого файла Stroki = Split(s1, vbNewLine) 'Разбиваем строку с первым файлом ' на массив строк по признаку конца строки s2 = ""' новая строка для нового файла целиком For i As Integer = 0 To Stroki.Length - 1 a = Stroki(i)' одна строка первого файла Обработка(b, a)' удаление символов из строки 'собираем измененные строки первого файла в 'одну строку s2 s2 = s2 + a + vbNewLine Next 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(sender As Object, _ e As EventArgs) Handles Button1.Click Dim ПутьФ1 As String = "" ПутьФ1 = vvod(TextBox1) Чтение(Str1, ПутьФ1) : vivod(Str1, TextBox3) End Sub Private Sub Button2_Click(sender As Object, _ e As EventArgs) Handles Button2.Click Dim Str2 As String = "" Dim ПутьФ2 As String = "" ПутьФ2 = vvod(TextBox2) : Чтение(Str2, ПутьФ2) vivod(Str2, TextBox4) Resh(Str2, Str1, Rez) : vivod(Rez, TextBox5) End Sub Private Sub Button3_Click(sender As Object, _ e As EventArgs) Handles Button3.Click Dim ПутьФ As String = "" ПутьФ = vvod(TextBox1) : Запись(ПутьФ, Rez) End Sub Private Sub Button4_Click(sender As Object, _ e As EventArgs) Handles Button4.Click End End Sub End Class

 

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

 

Программный код, решаемой задачи содержит процедуры vvod(),
vivod(), Обработка(), Resh(), Чтение()
и Запись(). Так как разработанный интерфейс имеет не одну, а несколько кнопок, которые работают со строками, содержащими первый файл (Str1 – для исходного файла и Rez – для измененного файла), то эти строки должны быть доступны нескольким событийным процедурам, поэтому в программном коде их необходимо сделать глобальными (видимыми) для всех процедур, и объявить в начале программы, до работы всех процедур.