Motto

В тихом саду здравомыслия
Пусть на вас постоянно падают
кокосовые орехи пробужденности.
Чогьям Трунгпа РИНПОЧЕ


Версия для мобильного


понедельник, 5 января 2009 г.

Общее описание библиотеки Jedi Code Library. JCL 3.35.

И что это я, в самом деле, всё про JVCL, да про JVCL? Давайте я вам лучше за JCL расскажу.

JCL поставляется в виде архива, содержащего исходные файлы библиотеки, файлы справки, несколько экспертов для IDE и установщик, способный установить всё это в Delphi. Библиотека JCL может установлена в Delphi с 6й(более ранние не проверял) по 2009 версию, включая Delphi Turbo Explorer.

Примечание: при первой установке JCL и JVCL не получится установить с помощью Lazy Delphi Builder. Причина в том, что обе библиотеки настраиваются при помощи .inc-файлов, а эти файлы генерируются установщиком Jedi при первой установке. Впрочем, при желании их можно сгенерировать и вручную из шаблона.

Полностью разобраться со всем и подробно описать, задача нереальная. Поэтому я дам только поверхностное описание Jedi Code Library 3.35, основанное на справке той же версии:

  1. Функции, процедуры и типы появившиеся только в старших версиях Delphi, для облегчения поддержания классов и компонентов в старых версиях Delphi. Проще говоря, если необходимо скомпилировать код из Delphi 2007, например, в Delphi 5, то JCL может немного упростить процесс перевода.
  2. Containers. Абстрактный класс и интерфейсы для реализации потокобезопасных(thread-safe) контейнеров(векторы, связанные списки, ассоциативные массивы).
    1. Интерфейсы: IJclIterator, IJclIntfCollection, IJclCollection, IJclIntfList, IJclList, IJclIntfArray, IJclArray, IJclIntfSet, IJclSet, IJclIntfTree, IJclTree, IJclIntfIntfMap, IJclMap, IJclIntfQueue, IJclQueue, IJclSortedMap, IJclIntfSortedSet, IJclSortedSet, IJclIntfStack, IJclStack, IJclStrIterator, IJclStrCollection, IJclStrList, IJclStrSet, IJclStrTree, IJclMultiIntfIntfMap, IJclStrIntfMap, IJclStrStrMap, IJclStrMap, IJclStrStrSortedMap, IJclStrStack, TJclTraverseOrder
    2. Классы реализующие: хеш-таблицы, ассоциативные массивы, векторы, стеки, очереди, массивы, ordered sets(упорядоченные множества?).
  3. Date and time. Функции по работе с датой и временем(вычисление Пасхи, преобразование в формат дат других ОС и файловых систем), функции и интерфейсы для реализации планировщика задач(IJclSchedule, IJclScheduleDayFrequency, IJclDailySchedule, IJclWeeklySchedule, IJclMonthlySchedule, IJclYearlySchedule – если кому-нибудь доводилось реализовывать планирование "как в Outlook-е”, то он в курсе сколько там возни;-)), а также таймеры для замеров времени выполнения кода.
  4. Debugging. Очень мощная поддержка отладки кода: функции по отправке сообщения отладчику, перехват исключений(exceptions hooks), получение информации об обработчике исключения(except frame), парсер map-файлов, получение информации из стека вызовов, включая получение имени класса, процедуры и номера строки вызвавшей исключение. См. также статью на Rsdn: Локализация ошибок в приложениях Delphi с помощью библиотеки Jedi Code Library.
  5. Expression Evaluation. Разбор и вычисление выражений. Классы для анализа и вычисления математических выражений, позволяющих контролировать анализ, вычисления, классы умеющие компилировать вычисленное выражение в бинарный код и возвращать указатель на скомпилированную функцию, работа со списками выражений.
  6. Files and IO. Работа с файловой системой. Функции для получения детальной информации о файлах(дата время модификации, создателя, владельца), поиска файлов по маске, получения списка файлов в каталоге, создания резервных копий, удаления в корзину, блокировка диска(lock volume), работа с NTFS(сжатие, работа с потоками и другие, - более 20 функций), манипуляции с путями(paths), работа с временными файлами, работа с отображаемыми в память файлами.
  7. Graphics. Сюда входят классы для манипуляций с изображениями(бывшая библиотека Graphics32), функции для работы с цветовыми каналами, функции для сохранения полноцветных иконок(allowing for > 16 colors) в Tstream и файл, функции для манипуляции с TRect, класс-обёртка над регионами(wrapper for windows regions) - TjclRegion,
  8. Internationalisation. Классы для работы с клавиатурными раскладками(keyboard layout): получение списка доступных, активация, выгрузка, просмотр свойств раскладки. Классы для получения информации о локалях(locale) – получение списка, чтение информации.
  9. MAPI. Классы и функции по работе с мейлами через MAPI. Содержит классы: TJclEmail, TJclEmailRecip, TJclEmailRecips, TJclSimpleMapi.
  10. Libraries, Processes and Threads. Классы и структуры для чтения  Portable Executable File Format. Потокобезопасные функции по работе с integer(LockedCompareExchange, LockedExchangeAdd, LockedAdd, LockedExchangeSub, LockedSub, LockedExchange, LockedExchangeInc, LockedInc, LockedExchangeDec, LockedDec). Объекты синхронизации: TJclCriticalSection, TJclCriticalSectionEx, TJclDispatcherObject, TJclEvent, TJclMeteredSection, TJclMultiReadExclusiveWrite, TJclMutex, TJclOptex, TJclSemaphore, TJclWaitableTimer.
  11. Math routines.
    1. TJclComplex – класс, реализующий комплексные числа и следующие операции над ними: базовая арифметика, натуральные логарифмические и экспоненциальные функции, тригонометрические функции, гиперболические тригонометрические функции, комплексные функции Бесселя.
    2. Функции по работе с CRC(crc16 и crc32)
    3. Поддержка чисел с плавающей запятой.
    4. Работа с FPU(8087) (чтение каких-то данных)
    5. Различные математические функции .
  12. Memory, Classes and Objects. Функции и классы по работе с памятью, манипуляции с DMT, VMT.
    1. Guards отвечают за автоматическое освобождение выделенной памяти при выходе из области видимости(scope). Насколько я понял, guards делает то же, что и try…finally блок, но с меньшим количеством набранного кода.
    2. Манипуляции с классами. Включают в себя функции, проверяющие является ли указатель классом или объектом(IsClass, IsObject), функцию пытающуюся реализовать грязный хак по подмене родительского класса – SetClassParent(не представляю где подобное может понадобится), а также функции по получению информации о виртуальных и динамических методах, списках методов и полей
  13. MIME. Функции по MIME кодированию, декодированию(MIME64).
  14. Miscellaneous. Функции позволяющие выключить, перезагрузить компьютер, запустить процесс от имени пользователя, изменить разрешение экрана.
  15. Ordinal Math and Logic. (затрудняюсь описать)
  16. Registry and Ini files. Функции(только функции) для работы с реестром(без использования TRegistry) и ini-файлами.
  17. Runtime Type Information. Получение и генерация RTTI информации. Для получения информации в JCL объявлена функция JclTypeInfo, возвращающая один из интерфейсов: IJclBaseInfo, IJclClassTypeInfo, IJclDynArrayTypeInfo, IJclEnumerationTypeInfo, IJclEventTypeInfo, IJclFloatTypeInfo, IJclInt64TypeInfo, IJclInterfaceTypeInfo, IJclOrdinalRangeTypeInfo, IJclOrdinalTypeInfo, IJclSetTypeInfo, IJclStringTypeInfo, IJclTypeInfo. Для генерации RTTI, JCL предоставляет следующие функции: JclGenerateSetType, JclGenerateEnumType, JclGenerateEnumTypeBasedOn, JclGenerateSubRange, RemoveTypeInfo.
  18. String Manipulation. Функции для манипуляции со строками и списками строк: поиск, замена, тестирование символов.
  19. System Information Routines. Получение информации о системе
    1. Common Folders. Функции возвращающие пути до системных папок. Примерно такие: GetCommonAppdataFolder, GetStartmenuFolder, GetSendToFolder
    2. Environment. Функции для чтения, создания, удаления и редактирования переменных окружения(Environment variables).
    3. Hardware. Чтение информации о процессоре(-ах), о кэше процессора, CPUID, Mac-адреса, TestFDIVInstruction.
    4. Identification. Получение серийных номеров дисков(Volumes), информации о BIOS-е, компьютере, домене.
    5. А также, функции реализующие получение информации о свободной памяти, версии Windows, проверкe включен ли User Account Control, чтение состояния клавиатуры.
  20. Unicode. Функции по работе с юникодом, в основном из библиотеки Mike Lischke. Включает в себя классы TWideStrings, TWideStringList, а также классы для поиска TURESearch(поиск с использованием регулярных выражений) и TUTBMSearch(поиск по алгоритму Бойера — Мура). Все эти функции работают также в версиях Delphi, не поддерживающих юникод(!).
  21. Unit Conversions. Функции для перевода из одних единиц измерения в другие.
  22. LAN Manager. Функции для управления группами и пользователями: чтение, создание, удаление.
  23. RegularExpressions. Регулярные выражения. Согласно хелпу, содержит заголовки и классы к pcre.dll(Perl-compatible Regular Expressions).
  24. Security. Проверка доступа и наличия привилегий.
  25. Shell. Работа с shortcuts, PIDL-ами, иконками shell, и такими функциями: SHDeleteFolder, SHDeleteFiles, SHRenameFile, SHEnumFolderFirst, SHEnumFolderClose, SHEnumFolderNext.
  26. Windows NT Service control
  • Все обзоры компонентов Jedi VCL на русском
  • Знакомство с Jedi Code Library(JCL) и Jedi Visual Component Library(JVCL)
  • JVCL: слежение за буфером обмена, чтение джойстика, HID, drag и drop с любыми контролами, отключение хранителя экрана, мониторинг папок, взаимодействие между экземплярами программы, чтение системной информации о компьютере, чтение журнала событий Windows(event log), ведение журнала исключений
  • Создание Wizarda в Delphi
  • Локализация ошибок в приложениях Delphi с помощью библиотеки Jedi Code Library

  • 3 комментария:

    1. и как же ставить в Delphi Turbo Explorer

      ОтветитьУдалить
    2. Скомпилировал JediInstaller.exe тем же Delphi Turbo Explorer и после запуска turbo delphi.bat вылетает ошибка Range check error. Как побороть?
      Скачал вот этот архив JVCL338CompleteJCL201-Build3449.zip

      ОтветитьУдалить

    Постоянные читатели