Новые возможности.


Константы

Константа Описание
vbUnicode
то же что и в VB 6.0
vbFromUnicode
см. выше
vbLowerCase
см. выше
vbUpperCase
см. выше
vbSrcCopy
см. выше
vbSrcAnd
см. выше
vbSrcPaint
см. выше
vbSrcInvert
см. выше
vbMethod
см. выше
vbFunc
см. выше
vbGet
см. выше
vbLet
см. выше
vbMD2
тип шифрования, используется в Sys.Conv.HashFile и Sys.Conv.HashString
vbMD4
см. выше
vbMD5
см. выше
vbSHA1
см. выше
vbModal
то же что и в VB 6.0
mf_IDM
Номер текущего модуля.
mf_NameMod
Имя текущего модуля.
mf_NameLib
Имя библиотеки (в формах библиотек).

 

 

Функции и свойства

Синтаксис Описание
Unload(obj)
Процедура выгружает указанный объект.
Doevents
Процедура приостанавливает выполнение программы и передает управление операционной системе для выполнения ею текущих задач, после выполнения которых управление возвращается обратно программе.
Остальные доступные свойства см. в классе SHD

 

 

Операторы

Синтаксис Описание
#Lib "NameLib"

Подключение библиотек (те же скрипт-файлы).

Где NameLib - имя файла библиотеки без расширения файла (используется парсер).
Последущее обращение к любым объектам или коду этой библиотеки осуществляется через ее имя, т.е. например: NameLib.MyFunc

#Include "NameFile"

Подключение любого скрипт-файла к текущему скрипту (используется парсер и получение данных через функцию Sys.Content).

Declare Function NameFunction Lib "NameDLL" alias "NameFunctionOrig" (Arg1, Arg2 ... ArgN) as Long

Импортирование функций из DLL библиотек.

Где

NameDLL - имя библиотеки, если первый символ равен *, то функция вызывается посредством CDecl вызова, если второй символ равен @, то в функции не происходит преобразование строк в ANSI.
NameFunction - имя функции, если первый символ равен #, то функция вызывается по числовому ординалу.
NameFunctionOrig - имя функции оригинальное.
Arg1, Arg2 .. ArgN - аргументы функции.

Вместо слова Function может использоваться Sub

Перед этой конструкцией может быть Private или Public.

Примеры:

Declare Function Test Lib "mylib" (hwnd, flags) as Long
Private Declare Function Test Lib "mylib.dll" () as Long
Declare Function Test Lib "*@mylib.dll" (txt)
Declare Sub Test Lib "*mylib.dll" ()
Declare Function Test Lib "mylib.dll" alias "TestA" ()

Type NameType
anyName1 As varType1
.....
End Type

Объявляет структуру данных.

Где

NameType - имя типа данных
anyName1 - имя переменной
varType1 - тип переменной и может быть стандартным типом (fixed string, pointer string, long, integer, byte, single, double, currency, boolean, word) или другой структурой.

Управляющие строки могут быть следующего типа:

union as @ * number - позволяет описать другую независимую структуру, при этом общий размер структуры NameType будет равен максимальной по размеру структуре. Где number (по умолчанию равно 0) - начальное смещение в структуре.

offset as @ * number - позволяет задать смещение в структуре, для последующих записей. Где number (по умолчанию равно 0) - если отрицательное значение, то смещение относительное, иначе абсолютное.

Interface NameInterface [ {txtCLSID}, {txtIID}, CLSCTX ] = id:NameFunc1(num) , id:NameFunc2(num) ..... id:NameFuncN(num)

Создание интерфейса.

Где

NameInterface - имя класса который будет реализовывать указанный интерфейс.
txtCLSID - идентификатор класса
txtIID - идентификатор интерфейса
CLSCTX - контекст класса (например: CLSCTX_INPROC_SERVER = 1)
id:NameFunc1(num) - описание реализуемой функции, где
id: - необязательный параметр, определяет номер функции в интерфейсе, если указан то все последующие номера функций автоматически инкрементируются (если этот параметр не указан в них).
NameFunc1 - обязательный параметр, указывает название реализуемой функции.
(num) - необязательный параметр, указывает количество параметров реализуемой функции, если параметр не указан то количество параметров у функции нет.

Пример:

Interface IActiveDesktop [ {75048700-EF1F-11D0-9888-006097DEACF9}, {F490EB00-1240-11D1-9888-006097DEACF9}, 1 ] = QueryInterface(2), AddRef, Release, ApplyChanges(1), GetWallpaper(3), SetWallpaper(2), 7:SetWallpaperOptions(2), GetWallpaperOptions(2)

txt =~ igmeq/regvar/value/

Выполнение регулярных выражений в стиле Perl.

Где igem - флаги

i - игнорирование регистра символов
g - поиск по всей строке
m - использовать режим мультистрок
e - вернуть объект Match, иначе вернуть проверку на истинность. И все это при условии что value равно пустой строке.
q - ручной ввод выражений (если не использовать то выражения заключаются в кавычки, используется для вставки значений функций, переменных и т.п.)

Примеры:
txt =~ i/.+/test/
txt =~ ig/.+/test/
txt =~ q/".+"/"test" + MyFunc(1)/
find = txt =~ ig/.+//
msgbox(find)
Set mts = txt =~ ige/.+//
msgbox(mts.count)


regvar - регулярное выражение
value - текст для замены, если равно пустой строке ("") то регулярное выражение выполняет функцию проверки на истинность или возвращает объект Match, если равно одиночному символу табуляции то заменяется на пустую строку.

Для чтения результатов следует использовать коллекцию Sys.Rxp.Mts, или переменные окружения регулярных выражений:

Синтаксис
Аналог (RegExp)
txt = $$1 txt = mts(0).submatches(0)
txt = $$2 txt = mts(0).submatches(1)
txt = $$3 txt = mts(0).submatches(2)
txt = $$n txt = mts(0).submatches(n-1)