Использование ORE в макросах

Автор dr.Faust, 17 апреля 2010, 14:14

0 Пользователи и 1 гость просматривают эту тему.

dr.Faust

Если вдруг кому-то захочется использовать ORE для своего кода, то нужно помнить следующие:

Большинство функций ORE будут работать даже если библиотека только загружена, но некоторые возможности требуют инициализации библиотеки.
Наиболее полную и правильную загрузку и инициализацию ORE можно выполнить следующим типовым кодом:
'Option Explicit — не используйте Option Explicit в модуле инициализации
Public Const MyName = "org.mysite.addon.MyApp" ' - имя расширения

Sub OREini_by_MyApp
'Строковые константы GUI
Const tmCriticalError = "Критическая ошибка"
Const mNotORE = "Не найдена библиотека OceanRuntimeEnvironment."
Const mNotIniORE = "Библиотека OceanRuntimeEnvironment работает неправильно."
Const mOldORE = "Требуется библиотека OceanRuntimeEnvironment версии >= "
Const mUEORE = "Непредвиденная ошибка инициализации библиотеки OceanRuntimeEnvironment."
'константы зависящие от расширения
Const my_oreFamily = 1 ' - семейство ORE требующееся для вашего приложения
Const my_oreVersion = 0 ' - минимальная версия ORE требующееся для вашего приложения
Const my_oreSubVersion = 2 ' - минимальная подверсия ORE требующееся для вашего приложения
Const my_oreEdition = 1 ' - минимальная редакция ORE требующееся для вашего приложения
Const my_oreBuild = 1 ' - минимальная сборка ORE требующееся для вашего приложения
On Error GoTo UnknowErr
If oev_FullIni Then 'если библиотека ORE уже полностью инициализирована...
' проверим ее версию:
If my_oreFamily = oec_oreFamily Then ' семейство верное
If my_oreVersion < oec_oreVersion Then
ElseIf my_oreVersion = oec_oreVersion Then ' проверяем младший "разряд"
If my_oreSubVersion < oec_oreSubVersion Then
ElseIf my_oreSubVersion = oec_oreSubVersion Then ' проверяем младший "разряд"
If my_oreEdition < oec_oreEdition Then
ElseIf my_oreEdition = oec_oreEdition Then ' проверяем младший "разряд"
If my_oreBuild <= oec_oreBuild Then
Else
GoTo errVers
End If
Else
GoTo errVers
End If
Else
GoTo errVers
End If
Else
GoTo errVers
End If
Else
GoTo errVers
End If
Else
If BasicLibraries.hasByName("OceanRuntimeEnvironment") Then
'первым делом подгружаем разделяемую библу
BasicLibraries.LoadLibrary("OceanRuntimeEnvironment")
'и реинициализируем её
LoadOceanEnvironment MyName
' проверим ее версию:
If my_oreFamily = oec_oreFamily Then ' семейство верное
If my_oreVersion < oec_oreVersion Then
ElseIf my_oreVersion = oec_oreVersion Then ' проверяем младший "разряд"
If my_oreSubVersion < oec_oreSubVersion Then
ElseIf my_oreSubVersion = oec_oreSubVersion Then ' проверяем младший "разряд"
If my_oreEdition < oec_oreEdition Then
ElseIf my_oreEdition = oec_oreEdition Then ' проверяем младший "разряд"
If my_oreBuild <= oec_oreBuild Then
Else
GoTo errVers
End If
Else
GoTo errVers
End If
Else
GoTo errVers
End If
Else
GoTo errVers
End If
Else
GoTo errVers
End If

Else 'если библиотеки нет
MsgBox mNotORE,16,tmCriticalError
End
End If
If oev_FullInit Then
Else 'если не удалась полная инициализация
MsgBox mNotIniORE,16,tmCriticalError
End
End if
End If
Exit Sub
errVers:
'если библиотека слишком стара
MsgBox mOldORE & my_oreFamily & ":" & my_oreVersion & "." & my_oreSubVersion & "." & my_oreEdition & "." & my_oreBuild,16,tmCriticalError
End
UnknowErr:
MsgBox mUEORE,16,tmCriticalError
End
End Sub
Свобода информации - свобода личности!

dr.Faust

Пример расширения использующего некоторые возможности ORE можно найти здесь - http://forumooo.ru/index.php/topic,80.msg485.html#msg485
Свобода информации - свобода личности!