Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Конспект VB.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
2 Мб
Скачать
☆

Input #номерФайла, списокПеременных

а смысл в том, что она из последовательно открытого в режиме Input файла с номером #номерФайла считывает в переменные списокПеременных данные, разделенные запятыми. Этот оператор для считывания обычных текстов не годится, а вот данных, а потом использование их в переменных - сколько угодно. Но мы попробуем считать все-таки этот наш файл и этим оператором. Опять кладем на форму кнопку Command3 и там ваяем по тому же принципу:

Private Sub Command3_Click() F = FreeFile Open App.Path & "\Справка.txt" For Input As #F Do Until EOF(F) Input #F, MyText AllMyText = AllMyText & ", " & MyText Loop Close #F Text1.Text = AllMyText End Sub

Это, конечно, некорректное применение оператора, но мы вернемся к нему, когда будем рассматривать запись в файл с помощью оператора Write #. Как ты видишь, запятые не выводятся, приходится их запихивать насильно, не всегда к месту, но ради полноты, я посчитал надо показать и это. Все, теперь запись.

ЗАПИСЬ в текстовой файл.

Как и для считывания, прежде, чем записывать в текстовой файл, нужно получить к нему доступ. Для этого используем оператор Open с ключевым словом Output. Добавим на форму еще кнопку Command4. Создадим для нее процедуру и напишем там:

Private Sub Command4_Click() F = FreeFile Open App.Path & "\Запись.txt" For Output As #F

Таким образом мы открыли файл с последовательным доступом, который называется "Запись.txt" в нашей текущей директории под свободным номером #F, для записи (For Output). При этом, если такого файла не существует, он будет создан, а если существует и в нем что-то записано, то это что-то будет стерто, а вместо будет помещены наши новые данные, которые мы сейчас будем записывать, например, скажем с помощью оператора Print #. Записать его можно аналогично оператору считывания Line Input:

Print #F, Text1.Text

То есть, мы записываем содержимое нашего текстбокса (если там что-то есть. Считайте в текстбокс Text1 наш файл Справка.txt нажатием одной из кнопок Command1-Command3) в файл "Запись.txt". Затем закрываем файл и конец процедуре:

Close #F End Sub

Ты можешь открыть этот файл с помощью Виндусового Блокнота или в любом текстовом редакторе и посмотреть его. Или напиши в нашей программе свой код, чтоб считать этот файл в Text1 и сразу его посмотреть. В принципе, если тебе это надо, оператор Print # может форматировать текст, т.е. менять отступы от края, вставлять пробелы, но только между переменными, а не конечно в середину, скажем, нашего текста. Для этого используется аргументы Spc (количество пробелов) для введения пробелов и Tab(номер столбца) для вывода данных по столбцам. Положим на форму еще текстбокс Text2 и кнопку Command5 и в ее процедуре напишем код для форматированной записи. Потом считаем наши записи в Text2 с помощью оператора Line Input. С этим, я думаю, ты разберешся сам. (Не забудь поставить свойства Text2:свойство Multiline поставим в True, а свойство ScrollBars в 2 - Вертикаль.

Private Sub Command5_Click() F = FreeFile Open App.Path & "\Запись.txt" For Output As #F 'печатаем тексты с 15-й позиции Print #F, Spc(15); "Я вывожу этот текст" Print #F, Spc(15); "очень красиво" Print #F, Spc(15); "потому, что я настоящий" Print #F, Spc(15); "ПРОГРАММИСТ" 'печатаем пустую строку Print #F, 'печатаем тексты в 30-ем, 40-м и 50-м стобцах соответственно Print #F, Tab(30); "тридцатый столбец" Print #F, Tab(40); "сороковой столбец" Print #F, Tab(50); "пятидесятый столбец" 'если оператор завершать точкой с запятой, то перехода на следующую строку не будет Print #F, Spc(15); "Печатаю текст"; Print #F, Spc(15); "не очень хорошо" ' и наконец несколько текстов в одном операторе Print #F, Spc(10); "10 пробелов"; Tab(30); "30-й столбец+ 10 пробелов в начале"; Spc(5); "Пять пробелов" Close #F

'считаем записанный текст в Text2 Text2.Text = "" MyText = "" F = FreeFile Open App.Path & "\Запись.txt" For Input As #F Do Until EOF(F) Line Input #F, MyText Text2.Text = Text2.Text & MyText & vbCrLf Loop Close #F End Sub

Теперь запишем чего-нибудь в файл с помощью оператора Write #, а потом, уже корректно считаем это оператором Input # о котором мы уже говорили в этой главе. С помощью оператора Write # удобно записывать данные твоей программы. Есть две особенности. Первое - данные разделяются разделителем (запятой), и второе - данные надо считывать в переменные того же типа, что и запись в файле ( то есть число - в число, дату в дату, стоку в строку и т.п., иначе возникнет ошибка) и представляются они в файле в достаточно своеобразном виде - каждый в своем формате. Сейчас разберем это на примере, я так думаю, будет понятнее. Положим еще одну кнопку Command6 на форму и в ней объявим переменные четырех разных типов.

Private Sub Command6_Click() Dim Chislo As Long ' числовая Dim Stroka As String ' строковая Dim Logika As Boolean ' логическая Dim DDate As Date' дата (не путайте с Data)

Надо заметить, что число выводится в файл как число, строка - как строка в кавычках, логическая переменная может принимать только два значения Да и Нет в формате #False# или #True#, а дата в виде #2004-07-20# , что соответствует 20 июля 2004 года. Дальше присваиваем переменным какие-нибудь значения в соответствующем формате

Chislo = 15 Stroka = "пятнадцать" Logika = True DDate = #7/20/2004#

Записываем данные в файл. Обратите внимание, я нарочно записываю двумя операторами Write #, а считываю одним, чтобы показать, что абсолютно не имеет значения, сколько операторов Write# или Input# ты будешь использовать.

F = FreeFile Open App.Path & "\Запись.txt" For Output As #F Write #F, Chislo; Stroka Write #F, Logika; DDate Close #F

'теперь считаем данные с помощью оператора Input# F = FreeFile Open App.Path & "\Запись.txt" For Input As #F Input #F, Chislo, Stroka, Logika, DDate 'и выведем их в Text2 Text2.Text = Chislo & " " & Stroka & " " & Logika & " " & DDate Close #F End Sub

Сейчас, когда ты запустишь программу, ты увидишь, что в Text2 данные вывелись в очень достойном виде, но это потому, что мы используем для считывания оператор Input #. Если же ты откроешь файл " Запись" в блокноте или считаешь файл с помощью оператора Line Input, то увидишь несколько иную картину, вот такую: