В клубе происходит переосмысление работы в виде статей, выпусков, ЧАВО и других разделов. В результате этого у нас рождается новый клуб, по крайней мере некая новая концепция, которая переведет нас на более профессиональные рельсы. Текущее состояние явно нас не устраивает. В качестве первого пробного шара идет рассмотрение нового форума, который войдет в строй в самое ближайшее будущее, а пока его настройки тестируются здесь: http://shelek.com/ipb2/
В данный момент Never не может регулярно выпускать уроки по VB. Я продолжу их выпуск, но немного изменю структуру самих уроков. Урок будет состоять из 3-х частей: 1) Теория по языку (операторы, алгоритмы); 2) Приложение в котором будут постепенно описываться стандартные компоненты VB; 3) Задания. И еще, не забывайте задавать свои вопросы на форуме – обязательно отвечу, разъясню более подробно непонятные моменты.
Теория.
В 10-м уроке Невы рассматривались конструкции ветвления (оператор If). Бывают случаи, когда в зависимости от значения переменной, надо выполнить определенные действия. С помощью оператора If, это выглядит примерно так:
If x=0 Then MsgBox “x = 0” Else If x<0 Then MsgBox “x < 0” Else If x > 0 Then MsgBox “x > 0” End If End If End If
Но такая запись является очень громоздкой, и при большом количестве условий и выполняемого кода, трудно читаемым… Даю гарантию, что через полгода, после написания кода с такой конструкции, даже программист, написавший программу, при необходимости внесения изменения в код, потратит немало времени и сил на разбор такой конструкции…
В Visual Baisic, как и в других языках высокого уровня, предусмотрена конструкция Select
Case, которая позволяет выполнить одну из нескольких групп операторов в зависимости от значения условия, т.е. как раз для описанного выше случая. Инструкция Select Case имеет следующий вид: Select Case {Проверочное значение} Case {Значение 1} {Операторы 1} Case {Значение 2} {Операторы 2} Case Else {Операторы 3} End Select </code> В качестве значения для блока Case можно указывать не только одно значение (1), но и несколько, разделенных запятой (2,3). Можно определять также области сравнения (4 to 6) или воспользоваться относительным сравнением (is>=9). Вместо непосредственного проверочного значения можно использовать ключевое слово is.
Наш предыдущий пример будет выглядеть так: Select Case x Case 0 MsgBox “x = 0” Case is < 0 MsgBox “x < 0” Case
is > 0 MsgBox “x > 0” End Select
Блок Case Else выполняется, если ни одно из предыдущих условий не является истинным.
Если условию Select Case соответствует несколько блоков Case, выполняется первый из них. Пример: Select Case x Case 0 MsgBox “x = 0” Case -50 to 50 MsgBox “x между -50 и 50, кроме 0” End Select
Во втором блоке Case обрабатывается значение от -50 до 50, однако значение 0 перехватывается первым блоком Case. Поэтому операторы второго блока Case будут выполняться, если x будет больше или равно -50 и меньше 0, а также больше 0 и меньше или равно 50.
Совет: операторы в блоках Case оформлять в виде процедур, вызываемых в данном блоке.
В этой статье описан класс CComPortManager, который позволяет выполнять операции записи/чтения с com-портом (по стандартному протоколуRS-232). (В примерах использована среда VC++6.0. Буду описывать действия подробно :) ) Ниже описано, как встроить класс в новый проект test.
Итак, создаём "пустой" проект test (dialog-based): 1) Нажимаем Ctrl+N. Во вкладке Projects выбираем MFC AppWizard (exe). В окошке Location указываем путь, где будет создан проект. В окошке Project name пишем имя проекта - test. Нажимаем OK. 2) Выбираем тип проекта - Dialog based. Давим кнопку Finish, затем OK. 3) Сохраняем проект (кнопка SaveAll на тулбаре)
Теперь мы станем ;) добавлять наш класс CComPortManager в проект. Почему станем? Потому, что просто слово "добавим" не подходит.
Делаем заготовку для нашего класса. 1) Добавляем к ресурсам новый диалог. В
окне Workspace во вкладке ResourceView добираемся до папки ресурсов "Dialog". Правой кнопкой мыши (RMB) щёлкаем по папке - и выбираем InsertDialog. Новый диалог сразу откроется в редакторе ресурсов. Щелкаем по этому диалогу левой кнопкой (LMB) , тем самым выделив его, затем Alt+Enter - откроется окно свойств. Выберите вкладку General. В окошке ID напишите идентификатор IDD_dlgCPM_SETDIALOG. 2) Добавляем к проекту класс с именем CComPortManager. В окне Workspace во вкладке ClassView щёлкаем RMB по корню дерева списка классов. Выбираем NewClass. В списке Class type выбираем MFC Class, задаём имя класса CComPortManager, выбираем базовый класс - CDialog, выбираем ID диалога - IDD_dlgCPM_SETDIALOG. Нажимаем OK. 3) Сохраняем проект.
Закрываем среду VC++6.0. Теперь открываем папку проекта и находим там файлы, которые надо будет подправить - CComPortManager.h CComPortManager.cpp
test.rc Resource.h
В блокноте открываем файл CComPortManager.h. В этом файле находим описание класса:
Сегодня я дублирую сознательно одну книжку, она у нас была в виде HTML архива, а теперь появилась в виде CHM фрматированного файла - естественно стало гораздо удобнее.