Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Public RazmerMassiva As Long






Такие переменные называются глобальными переменными и срок их жизни такой же, как и у всего проекта (т.е. пока программа не закрыта). При этом в формах объявлять эту переменную уже не надо.
Напоминаю: если не указывать тип переменной, то по умолчанию она будет типом Variant, и соответственно памяти под нее будет выделено по-максимуму.
Во-вторых, раз написанный модуль можно подключать к другим проектам. Это особенно актуально, когда ты пишешь процедуру, которую можно будет использовать в дальнейшем. Поэтому такие процедуры оформляются в виде функций или подпрограмм в модулях и могут быть вызваны из любого места любой твоей программы. Такие подпрограммы называются процедурами общего назначения. Эти процедуры не привязаны ни к каким событиям и работают только по вызову из программы. С их помощью можно создавать собственные функции и подпрограммы, которые расширяют возможности языка VB (pardon, последнее предложение само выскочило, наверно из учебника какого-нибудь).
В-третьих, разбитый на модули код гораздо удобней отлаживать и читать, поскольку программа делиться на логические блоки, а это деляет код программы яснее и понятнее.

Итак, мы можем создать в модуле три вида процедур:

Function (функция) - выполняет действия и возвращает значение (значение функции) - как правило одно, являющееся результатом этих действий (например вычисления)
Sub (подпрограмма) - выполняет действия, но значения, ассоциированного со своим именем не возвращает, хотя может возвращать значения нескольких переменных. (например действия ввода-вывода, изменения свойств и т.п.).
Property (свойство) - создает определяемые пользователем свойства. Применяется при создании классов и здесь рассматриваться не будет. Поговорим об этом, когда/если будем делать какой-нибудь контрол.

Процедуры типа Function - функция.

Синтаксис процедуры Function следующий:

Function имя функции (аргументы) As тип функции
операторы, выполняющие вычисления
End Function

Как видишь, синтаксис функции напоминает процедуры обработки событий, с которыми мы работали ранее. Начинается все ключевым словом Function, затем пишется имя функции, которое мы сами придумываем, далее следуют аргументы (необязательно), которые функция будет обрабатывать и которые передаются при вызове функции из программы. Затем можно определить тип возвращаемого функцией значения (по умолчанию - Variant). Далее в теле функции следуют операторы, выполняющие действия. И затем функция закрывается оператором End Function.
Смысл работы с функциями точно такой же, как и со встроенными функциями Visual Basic. Тебе надо вызвать функцию и передать в нее значения, с которыми она будет работать. Далее функция производит определенные операторами тела функции действия с этими значениями и сама принимает значение результата этих действий, которое далее используется в основном коде. Чтобы вызвать свою функцию, надо использовать оператор типа:

Text1.Text=Имя функции (значения, передаваемые в функцию)

Теперь, в качестве примера, давай создадим собственную функцию, которая будет возвращать количество слов в тексте.
Начнем новый Exe-проект. На форму положим Text1, куда запишем текст, который будет анализировать наша функция. Кроме того нам понадобиться Label1, куда мы выведем возврашаемое функцией значение и кнопка Command1, которой мы будем вызывать нашу функцию.
После того, как мы всю эту хрень запихнули на форму, добавим в наш проект стандартный модуль Module1 (как добавить - см. выше). Откроем его и начнем писать код. Сперва нам надо придумать имя для функции. Пусть это будет CountWords. Затем нам надо определить аргумент, с помощью которого мы передадим в функцию текстовую строку, которую наша функция будет анализировать. Пущай это будет Stroka. Поскольку у нас количество слов безумно большим не будет, определим тип нашей функции как Long. Вот теперь можно написать нашу первую строчку функции.

Function CountWords(Stroka) As Long
'Далее мы объявляем три необходимых нам переменных. Ну x - это просто для цикла, где мы
'будем перебирать каждую буковку и искать пробелы. NumWords - это как раз переменная, в
'которую мы будем записывать количество слов. FlagSlovo - это флаг, благодаря которому мы
'отследим, было ли слово перед тем, как был найден пробел. Таким образом мы избежим
'неправильного подсчета слов из-за того, что слова могут быть написаны через несколько
'пробелов, а кроме того сама строка может начинаться с пробела.

Dim x As Long
Dim NumWords As Long
Dim FlagSlovo As Boolean
'Организуем цикл по количеству символов в строке (Len(Stroka))
For x = 1 To Len(Stroka)

'Теперь, если значение символа - не пробел (код пробела - 32), присваиваем нашему флагу значение True
If Mid(Stroka, x, 1) < > Chr(32) Then FlagSlovo = True
'А далее анализируем: если у нас нашелся пробел и значение флага True, значит можно считать, что этим пробелом
'закончилось слово и мы увеличиваем наш счетчик слов NumWords на единицу и сбрасываем
' значение флага FlagSlovo на False

If Mid(Stroka, x, 1) = Chr(32) And FlagSlovo = True Then
NumWords = NumWords + 1
FlagSlovo = False

End If
Next x
'А далее, поскольку последнее слово может не заканчиваться пробелом, делаем проверку флага и если
' его значение True увеличиваем значение счетчика еще на единицу.

If FlagSlovo = True Then NumWords = NumWords + 1
'Далее мы тупо присваиваем значение счетчика нашей функции.
CountWords = NumWords
'Вот и все. Простая функция с одним аргументом готова.

End Function

Теперь нам как-то надо использовать нашу замечательную функцию. Сохраним проект и закроем модуль. Вернемся к нашей форме. В процедуре Form_Load присвоим Text1 какое-нибудь значение, чтобы нашей функции было с чем работать

Private Sub Form_Load()
Text1.Text = " Microsoft Visual Basic 6 Professional Edition " _
& " - это мощная система программирования, позволяющая быстро и" _
& " эффективно создавать приложения для Microsoft Windows и Microsoft Windows NT "
End Sub

Затем в процедуре кнопки Command1 напишем оператор вызова функции и присваивания его значения Label1:

Private Sub Command1_Click()
Label1.Caption = CountWords(Text1.Text)
End Sub

Теперь при нажатии кнопки Command1 мы в лейбле будем получать количество слов текстбокса. Конечно, как и в любой функции, можно вместо Text1.Text использовать переменную или просто написать любой текст.
Естествено, в функцию можно передать несколько аргументов. Исключительно для иллюстрации: мы можем находить, например, количество слов, начиная с n-ого символа. Для этого в модуле в объявление функции надо добавить аргумент, обозначающий номер символа (назовем его Position):






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.