Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Visual Basic - Трюки и Хитрости, советы и ответы на вопросы


Служба Рассылок Городского Кота
VB Хитрости - советы и ответы на вопросы

Здравствуйте, уважаемые читатели.


Решил донести до вас правду об условной компиляции.
Есть в бэйсике такая штука. Удобная временами.
Что означает условная и для чего это надо в принципе?
Например, у вас есть программа, которая должна работать
как демо-версия и как полная версия.
Прекрасно, вы можете распространять полный код, делая в нем
проверку, какой тип версии сейчас запущен. Однако вам боязно:
 вдруг сломают? Условная компиляция - это возможность не включать
 в код ненужные блоки. Или, более приближенный к боевым условиям
 пример: В программе полно отладочной информации - не тащить же
 ее в реальный проект. Убрать - раз плюнуть, но в какой-то
 момент может и пригодится.
 Условная компиляция дает нам возможность избежать хранения
 отдельных версий в виде разных проектов.
 Вот вам для начала пример.
 В модуле создаем паблик-процедуру:

 Public Sub WriteLog(MSG As String)
    Dim iFileNum As Long
    const LogName = "AppLog" ' эту константу стоит убрать
                             ' в область деклараций модуля
    iFileNum = FreeFile
    Open App.Path & "\" & LogName For Append As iFileNum
    Print #iFileNum, Format(Now, "mm/dd hh:nn:ss") & "   " & MSG
    Close #iFileNum
End Sub

 Процедура делает элементарные вещи. Открывает файл для записи и пишет
 туда что  попросили. Штука полезная для программ, работающих  самостоятельно,
 без участия  человека.
 Как будем ее вызывать:

 #if isLog then
   writelog "Сообщение для записи"
 # endif

 после чего идем в свойства проекта и в закладке Make ищем
 текстбокс, обозначенный Conditional Compilation Arguments
 и вписываем туда

 islog = 1

 В этом случае после компиляции код будет содержать вызов процедуры для записи
 в лог-файл. Если же перед компиляцией  изменить настройки

 islog = 0,

 код вызова включен не будет.


 Меня замучали вопросами "как открыть CDROM"
 Делай как я :-)

Option Explicit

Private Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" _
             (ByVal lpstrCommand As String, ByVal lpstrReturnString As String, _
               ByVal uReturnLength As Long, ByVal hwndCallback As Long) As Long

Public Sub CDOpen()
  Dim sRet As String
  sRet = Space(128)
  Call mciSendString("set CDAudio door open", sRet, 127, 0)
End Sub

Public Sub CDClose()
  Dim sRet As String
  sRet = Space(128)
  Call mciSendString("set CDAudio door closed", sRet, 127, 0)
End Sub

Private Sub Command1_Click()
    CDOpen
End Sub

Private Sub Command2_Click()
    CDClose
End Sub




 
Книга, весьма  полезная для понимания работы с API.
 А учитывая ее смешную стоимость
- 45 рублей.... Короче, рекомендую 

Хочу поставить в известность всех подписчиков этого листа - лист создается в html , а потом автоматом на Ситикоте из него создается текстовый вариант. Так что, если вы, по ошибке, подписались на текстовую версию - рекомендую изменить этот параметр, так как за качество конвертации я не отвечаю, а создавать отдельную версию у меня не хватает времени. Сорри.

Рассылка, которая вам может пригодится:
"Русские документы" - самые свежие компьютерные статьи

Еженедельные анонсы компьютерных статей, появившихся на сайте "Русские документы"
Вся самая интересная информация: от программирования и хитростях операционных систем до безопасности и программных руководств. И все это - на русском языке !

Подписаться:

 

 

Успехов в программировании!

Борис Рудой

Автор сайта - Visual Basic на русском



http://subscribe.ru/
E-mail: ask@subscribe.ru

В избранное