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