Файл подключаемого модуля в vb имеет расширение

Обновлено: 07.07.2024

Microsoft Visual Basic — язык программирования и интегрированная среда разработки программного обеспечения. Разрабатывался компанией Microsoft. Visual Basic унаследовал стиль и отчасти синтаксис языка BASIC, имеющего немало диалектов. Visual Basic сочетает в себе процедуры и элементы объектно-ориентированных и компонентно-ориентированных языков программирования, а интегрированная среда разработки VB содержит в себе инструменты для визуального проектирования пользовательского интерфейса, редактор кода с возможностью IntelliSense и подсветкой синтаксиса и инструменты для отладки приложений.

Содержание

Достоинства и недостатки

Достоинства

  • Высокая скорость создания приложений с графическим интерфейсом для Microsoft Windows.
  • Простой синтаксис языка обеспечивает низкий порог вхождения.
  • Возможность компиляции как в машинный код, так и в P-код (по выбору программиста).
  • Безопасность типов обеспечивает защита от ошибок, связанных с применением указателей и доступом к памяти. Этот аспект делает Visual Basic приложения более стабильными, но также является объектом критики.
  • Возможность использования большинства WinAPI функций для расширения функциональных возможностей приложения. Данный вопрос наиболее полно исследован Дэном Эпплманом, написавшим книгу «Visual Basic Programmer’s Guide to the Win32 API».

Недостатки

  • Поддержка операционных систем только семейства Windows и Mac OS X (Исключение — VB1 for).
  • Отсутствие полноценного механизма наследования реализации объектов. Существующее в языке наследование позволяет наследовать только интерфейсы, но не их реализацию.
  • Практически все встроенные функции языка реализованы через библиотеку времени исполнения, которая, в свою очередь, производит много «дополнительной» работы по проверке и/или преобразованию типов, что замедляет скорость работы приложений.

Язык сильно привязан к своей среде разработки и к операционной системе Microsoft Windows, являясь исключительно инструментом написания Windows-приложений. Привязка к среде заключается в том, что существует большое количество средств, предназначенных для помощи и удобства программирования: встроенный отладчик, просмотр переменных и структур данных на лету, окно отладки, всплывающие подсказки при наборе текста программы. Все эти преимущества делают бесполезным и даже невозможным использование Visual Basic вне среды разработки, например в обычном текстовом редакторе

Стоит отметить, что все недостатки языка вытекают из его основного достоинства — простоты разработки графического интерфейса. Поэтому многие программисты используют Visual Basic для разработки интерфейса пользователя, а функциональность программы реализуют в виде динамически подключаемых библиотек, написанных на других языках.

Элементы языка

Типы данных

Переменные объявляются следующим образом: Dim varName As typeName

Где varName - имя переменной, а typeName - ее тип. Тип переменной можно не указывать, тогда переменная объявляется как Variant.

Таблица основных типов

Массивы

Переменная массива объявляется постановкой круглых скобок после имени переменной. Если известно количество хранимых значений, то можно также указать размер массива в описании.

Присвоение значений элементам массива:

Также можно присвоить значения элементам массива в строке объявления переменной:

В данном случае наша программа представляет модуль с именем Module1 . Концепция модулей представляет парадигму модульного программирования, согласно которому вся программа делится на ряд модулей, которые отвечают за разные функции программы. Пока мы использовали только один модуль в программе. Теперь создадим программу из двух модулей - первый модуль будет считывать из файла некоторое значение, а другой модуль будет получать это значение и проводить с ним некоторые операции. Чтобы добавить в программу второй модуль, нажмите справа в окне Solution Explorer (Обозреватель решений) на название проекта правой кнопкой мыши, затем в появившемся списке выберите пункт Add (Добавить) -> Module. (Модуль) .


В открывшемся диалоговом окне выберите пункт Module (Модуль) , оставьте в качестве его имени Module2 и нажмите кнопку Add (Добавить)


Таким образом, мы добавили в программу новый модуль Module2 . В его коде ничего не определено, кроме объявления самого модуля:

Этот модуль будет отвечать у нас за считывание значения из файла. Чтобы считать файл, воспользуемся классом StreamReader , определенным в пространстве имен System.IO. Поэтому нам нужно импортировать данное пространство имен с помощью оператора Imports . Импортирование пространства имен производится в самом начале программы перед определением модуля или класса:

Теперь перейдем к самой реализации нашей программы - определим функцию, которая будет в качестве параметра принимать путь к файлу и будет возвращать считанное значение:

Обратите внимание на конструкцию Try . Catch . End Try - она нужна нам для обработки ошибок. Мы могли бы ее не использовать, но при выполнении программы может возникнуть ошибка. Например, мы введем неверный путь к файлу, и чтобы программа не зависла, а продолжала работать, мы используем данную конструкцию. После выражения Catch определен код для вывода ошибки на экран: Console.WriteLine(ex.Message).

Весь код нашей программы сосредоточен в трех строках между Try и Catch:

В первой строке мы создаем поток для считывания файла, который мы получаем из параметра path. Чтобы создать новый объект используется ключевое слово New . Во второй строке мы считываем первый символ из файла. Метод ReadLine класса StreamReader считывает одну строку из файла, поэтому нам надо будет потом ее привести к типу Integer и полученное значение присвоить переменной number. В третьей строке мы закрываем поток методом Close .

Теперь перейдем к главному модулю. Он будет получать результат из модуля Module2 и вычислять факториал числа:

Итак, этот код должен быть вам в целом знаком: сначала мы вводим путь к файлу, передаем его в функцию Read , которая определена в модуле Module2 . Так как мы для модуля Module2 определили пространство имен, то надо указать и его, поэтому вызов метода имеет следующий вид:

Обычно программа, состоит из более, чем одной форм. Часто возникает необходимость использовать содержимое переменной, полученной в одной форме для обработки в другой. Однако переменные, объявленные в форме в разеле General доступны только внутри этой же формы (контейнера). Для того, чтобы нужные переменные, подпрограммы, функции были доступны во всей программе, во всех формах, их объявляют в стандартных модулях.
Стандартный модуль в физическом смысле представляет собой файл с расширением .bas. Чтобы добавить стандартный модуль в exe-проект, надо в меню Проект (Project) щелкнуть по команде Добавить Модуль (Add Module) - рис. 26.

Рисунок 26.
После этого появиться окно добавления модуля рис.27

Рисунок 27.
в котором надо щелкнуть по кнопке Open (открыть). После этого в окне проекта вы увидите новую папочку Модули, в которой появиться наш первый модуль Модуль1. Хотя его имя, конечно, можно поменять в нижнем окне свойств Рис 28.

Рисунок 28.
После этого ты можешь щелкнуть по Модуль1 в окне проекта и перед тобой откроется окно модуля, такое же как и окно кода формы. В отличие от формы, модуль не имеет вида Объект, в него нельзя встраивать никакие другие объекты, так как он контейнером не является. В него лишь можно записывать код абсолютно также, как и в форму. В чем же радость от модулей, поскольку мы вроде бы пока обходились и без них.
Ну во-первых, как уже было сказано выше, объявленные в модуле переменные могут быть доступны во всем проекте, во всех его формах. Для этого переменная объявляется в разделе General с ключевым словом Public. Например
Public RazmerMassiva As Long
Такие переменные называются глобальными переменными и срок их жизни такой же, как и у всего проекта (т.е. пока программа не закрыта). При этом в формах объявлять эту переменную уже не надо.
Напоминаю: если не указывать тип переменной, то по умолчанию она будет типом Variant, и соответственно памяти под нее будет выделено по-максимуму.
Во-вторых, раз написанный модуль можно подключать к другим проектам. Это особенно актуально, когда ты пишешь процедуру, которую можно будет использовать в дальнейшем. Поэтому такие процедуры оформляются в виде функций или подпрограмм в модулях и могут быть вызваны из любого места любой твоей программы. Такие подпрограммы называются процедурами общего назначения. Эти процедуры не привязаны ни к каким событиям и работают только по вызову из программы. С их помощью можно создавать собственные функции и подпрограммы, которые расширяют возможности языка VB (последнее предложение само выскочило, наверно из учебника какого-нибудь).
В-третьих, разбитый на модули код гораздо удобней отлаживать и читать, поскольку программа делиться на логические блоки, а это деляет код программы яснее и понятнее.

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

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):

Function CountWords(Stroka, Position) As Long

и изменить наш цикл, который будет работать не с x=1, а x=Position

For x = Position To Len(Stroka)

А в форме, соответственно, вызов функции для подсчета слов , например, с 30-ой позиции, будет выглядеть

Label1.Caption = CountWords(Text1.Text, 30)

Это будет уже функция с двумя аргументами. Ну принцип, я думаю, ясен.

Процедуры типа Sub - подпрограмма.

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

Sub имя процедуры(аргументы)
операторы, выполняющие действия
End Sub

Здесь, также как и в функции, имя процедуры мы придумываем сами, аргументы - это данные, которые мы передаем в подпрограмму и с которыми она будет работать. Напишем подпрограмму, которая будет записывать в файл текст из Text1 нашей формы. Чтобы не путаться, добавим в наш проект еще один модуль Module2. Имя нашей процедуры будет AddFileText. В качестве аргументов мы должны передать в подпрограмму имя файла (NameF) и собственно текст (MyText). Пишем во втором модуле

Здесь все должно быть понятно - просто открываем файл с именем NameF и записываем содержимое переменной MyText.
Положим на нашу форму вторую кнопку Command2 и в ее процедуре напишем оператор вызова подпрограммы для записи в файл bbb.txt текста из Text1:

Private Sub Command2_Click()
AddFileText "bbb.txt", Text1.Text
End Sub

Теперь, при нажатии кнопки Command2, у нас в файл bbb.txt будет дописываться текст из текстбокса. В данном случае никаких изменений с передаваемыми значениями аргументов не происходило. И произойти не могло, потому, что мы передали конкретное значение, а не переменную. Такая передача данных называется передача по значению. Однако можно ведь использовать и переменные. Такой способ передачи - по ссылке, может привести к тому (не в нашем случае), что в процессе выполнения подпрограммы значение переменных изменится и в программу вернутся уже измененные значения. Иногда это даже нужно, а иногда это наоборот может привести к ошибке. Чтобы избежать изменения значения переменной в процедуре, используется ключевое слово ByVal. При его использовании VB сохраняет изначальное значение и после окончания процедуры возвращает первоначальное значение переменной, даже если оно было изменено в ходе работы подпрограммы. Синтаксис использования этого ключевого слова в подпрограмме таков:
Sub AddFileText( ByVal NameF As String , MyText As String )

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

Изучив программы и выполнив упражнения из лекций с "Открытие и запуск программы в Visual Basic .NET" по "Перехват ошибок с помощью структурной обработки ошибок" , вы спокойно можете назвать себя средним программистом на Visual Basic . Вы изучили основы программирования на Microsoft Visual Basic . NET , и у вас есть навыки, необходимые для создания полезных утилит. В части 3 этой книги вы узнаете, как писать более сложные программы на Visual Basic . Начнем с изучения того, как создавать стандартные модули .

Стандартный модуль - это отдельная часть программы, которая содержит глобальные, или открытые, переменные и процедуры типа Function и Sub . В этой лекции вы узнаете, как объявлять и использовать открытые переменные. Вы также узнаете, как создавать ваши собственные процедуры, и как вызывать их. Полученные вами при этом навыки будут особенно полезны при создании больших программных проектов.

Работа со стандартными модулями

Когда вы будете писать длинную программу, у вас, скорее всего, будет несколько форм и процедур событий, которые используют одни и те же переменные и процедуры. По умолчанию переменные локальны для процедуры события, что означает, что они могут быть прочитаны и изменены только в той процедуре события, в которой они созданы. Вы также можете объявить переменные в верхней части программного кода формы и присвоить переменным более широкую область видимости , распространяющуюся на всю форму. Однако если вы создаете в проекте несколько форм, переменные, объявленные в верхней части формы, будут доступны только в той форме, в которой они объявлены. Точно также, процедуры событий по умолчанию объявляются как частные ( private ) и являются локальными для той формы, в которой они созданы. Например, нельзя вызвать процедуру события Button1_Click из второй формы с именем Form2 , если процедура события объявлена в Form1 как частная.

Примечание. О том, как добавлять в проект дополнительные формы, речь пойдет в "Управление формами Windows" .

Чтобы сделать переменные и процедуры доступными для всех форм и процедур событий проекта, их можно объявить в одном или нескольких стандартных модулях проекта. Стандартный модуль, или модуль кода, - это специальный файл с расширением .vb. Он содержит переменные и процедуры, которые могут быть использованы в любом месте программы. (В предыдущей версии Visual Basic модули имели расширение . bas .) Точно так же, как и в случае с формами, стандартные модули показаны в Solution Explorer (Обозреватель решений) отдельно, и стандартный модуль может быть сохранен на диск с помощью команды Save Module1 As (Сохранить Module1 как) из меню File ( Файл ) . Однако, в отличие от форм, стандартные модули содержат только код и не имеют интерфейса пользователя.

Стандартный модуль

Чтобы создать новый стандартный модуль в программе, щелкните на кнопке Add New Item (Добавить компонент) на стандартной панели инструментов или на команде Add New Item (Добавить компонент) в меню Project (Проект). Откроется диалоговое окно, которое позволит выбрать шаблон Module и запросит у вас имя этого модуля. После этого в Редакторе кода появится новый пустой модуль. Первый стандартный модуль программы имеет имя по умолчанию Module1.vb, но вы можете изменить это имя, щелкнув правой кнопкой мыши на модуле в Обозревателе решений или с помощью команды Save Module1.vb As (Сохранить Module1.vb как) из меню File (Файл). Попробуйте создать в проекте пустой стандартный модуль.

Стандартный модуль – это специальный файл, имеющий расширение *.vb и содержащий объявления переменных и описание про­цедур, которые могут быть использованы в любом месте программного кода проекта.

Как и модули формы, стандартные модули отображаются в окне Обозреватель решений (Solution Explorer), и могут быть сохранены на диске с помощью команды Со­хранить ModuleName.vb как (Save ModuleName.vb As) элемента главного меню Файл (File). ModuleName.vb является элементом проекта. В отличие от модуля форм, стандартные модули содержат толь­ко программный код и не имеют интерфейса пользователя. И хотя стандартные модули имеют некоторые сходства с классами (и те и другие являются контейнерами для данных и процедур), они отличаются от классов тем, что не являются объектно-ориентированными, стандартные модули не определяют структуры и характеристики объектов и не могут наследоваться.


Чтобы создать в программе новый стандартный модуль, необходимо щелкнуть на кнопке Добавление нового элемента (Add New Item) стандартной панели инструментов или на команде Добавить новый элемент… (Add New Item…) элемента главного меню Проект (Project). Также можно использовать команду Добавить модуль… (Add Module…) элемента главного меню Проект (Project). В результате выполнения одной из этих команд откроется диалоговое окно Добавление нового элемента … (Add New Item…) , в котором следует выб­рать шаблон Module и указать имя модуля (рис. 5.1.1-1).

После нажатия на кнопку Добавить (Add) в окне Редактор кода (Code Editor) по­явится новый пустой модуль. Первый модуль программы по умолчанию имеет имя Module1.vb, но это имя можно изменить, сделав щелчок пра­вой кнопкой мыши на модуле в окне Обозреватель решений (Solution Explorer) и введя новое имя моду­ля, или с помощью команды Сохранить Module1.vb как (Save Module1.vb As) элемента меню Файл (File).

Рассмотрим пример создания в проекте пустого модуля.

Пример 5.1.1-1. Создать пустой стандартный модуль.

Запустить VS и создать новый проект с именем Пример 5.1.1-1.

Будет создан новый проект, и в окне Конструктор (Designer) появится пустая форма.

Выполнить команду Добавить новый элемент… (Add New Item…) элемента главного меню Проект (Project).

Появится диалоговое окно Добавление нового элемента (Add New Item).

Выбрать шаблон Module.

В текстовом поле Имя (Name) появится имя по умолчанию Module1.vb. (рис. 5.1.1-1).

Диалоговое окно Добавление нового элемента… (Add New Item…) предлагает несколько шаблонов, доступных для использования в проектах. Каждый из этих шаблонов имеет различные характеристики и включа­ет начальный код, который облегчает их использование. Visual Studio содержит много шаблонов-форм Windows.

Щелкнуть на кнопке Добавить (Add).

VB добавит в проект модуль Module1. Этот модуль появится в окне Редактор кода (Code Editor), как показано на рис. 5.1.1-2.


Чтобы увидеть окно Обозреватель решений (Solution Explorer), дважды щелкните мышью на строке заголовка окна Обозреватель решений (Solution Explorer), а затем выберите Module1.vb.

Окно Обозреватель решений будет выглядеть так, как на рис. 5.1.1-2.


Рис. 5.1.1-2

Окно Обозреватель решений (Solution Explorer) в списке компонент проекта содержит модуль, ко­торый был добавлен в программу. Имя Module1 указывает на имя фай­ла модуля по умолчанию. Впоследствии можно изменить это имя файла.

Чтобы увидеть полный размер окна Свойства (Properties), дважды следует щелкнуть на строке его заголовка.

Как показано на рис. 5.1.1-3, окно Свойства (Properties) отображает свойства Module1.vb.

Так как модуль содержит только код, он имеет всего несколько свойств. Используя наиболее важное его свойство – File Name (Имя файла) – можно указать другое имя файла модуля, сделав его более описатель­ным в будущем. Обдумайте это название, так как в дальнейшем мо­жет возникнуть необходимость встроить этот модуль в еще один проект.


Изменить свойство File Name на МатематическиеФункции.vb или другое имя файла и нажать на <Enter>.

Имя файла модуля в окнах Свойства (Properties), Обозреватель решений (Solution Explorer) и в окне Редактор кода (Code Editor) обновится.

Вернуть окна Свойства (Properties) и Обозреватель решений (Solution Explorer) в их нормальные прикреп­ленные положения, дважды щелкнув мышью на их заголовках.

Как вы можете видеть, работа с модулями в проекте очень похожа на работу с формами. В следующем примере необходимо будет добавить в модуль от­крытую переменную.

Чтобы удалить модуль из проекта, следует щелкнуть на модуле в окне Обозреватель решений (Solution Explorer), а затем щелкнуть на команде Исключить из проекта (Exclude From Project) элемента главного меню Проект (Project).

Команда Исключить из проекта (Exclude From Project) не удаляет модуль с жесткого

диска, а удаляет связь между указанным модулем и текущим проектом. Чтобы отме­нить

эффект этой команды, щелкнуть на команде Добавить существующий элемент (Add Existing Item) элемента главного меню Файл (File), выбрать файл, который требуется

добавить в проект, и затем щелкнуть на кнопке Добавить (Add).

Объявление глобальной, или открытой переменной в модуле достаточно просто – ввести ключевое слово Public, за которым следует имя переменной и объявление ее типа. После того как переменная будет объявлена, читать ее содержимое, изменять его или отображать его на экране можно в любой процедуре программы.

Public Global As Integer

объявляет открытую переменную с именем Global типа Integer.

Следующий пример демонстрирует, как можно использовать в модуле открытую переменную с именем Wins. Для этого необходимо дополнить проект Счастливая семерка из Темы 4.1, в которой будет использована переменная Wins для записи числа выигрышей.

Пример 5.1.1-2. Переработать проект примера 4.3.2-1 Счастливая семерка.

В программном коде проекта примера 4.3.2-1 переменную Wins – число выгрышей, процедуру-функцию с именем HitRate( ), которая вычисляет долю выигрышей в игре, т. е. другими слова­ми, процентное выражение игр, в которых появляется хотя бы одна се­мерка, и открытую переменную Spins переместим из модуля формы в стандартный модуль. Причем форма останется такой же, как на рис. 4.3.2-1, а программный код примет вид, как на рис. 5.1.1-4.

Читайте также: