Главная » Статьи » FreePascal |
В категории материалов: 7 Показано материалов: 1-7 |
Сортировать по: Дате · Названию · Рейтингу · Комментариям · Просмотрам
Дорабатывая программу Word_test, решил добавить проверку орфографии (spell checking) в редактор словарей. В данном материале описываю некоторые особенности реализации функционала проверки орфографии в FPC/Lazarus программах с использованием динамической C++/C библиотеки Hunspell в Windows. |
Во второй части было показано, что в текущей реализации невозможно использование классов–наследников TCustomComparer<T>. В данном материале описывается возможное исправление этой ситуации. |
В первой части было рассмотрено использование для построения функций хеширования интерфейсов IEqualityComparer<T> и IExtendedEqualityComparer<T>, реализованных в модуле Generics.Defaults, который входит в состав FreePascal Generics.Collections library. В этой части будет описан опыт применения наследников класса TCustomComparer<T> для хеширования строковых данных. В ходе этой попытки было выяснено, что некоторые особенности реализации классов приводят к невозможности использования этих классов. |
Однажды мне понадобилось применить в некотором алгоритме хеш-функцию. Поиск в Интернете вывел меня на FreePascal Generics.Collections library, в которой предлагался целый набор таких функций. Кроме того имелся набор классов и интерфейсов для построения Compares, EqualityComparers и HashFactories. Все это было написано в виде generics с возможностью настройки для разных типов входных данных. Я решил попробовать применить библиотеку в своей работе, и вот что у меня получилось. |
В продолжении предыдущего материала. При подготовке справочного файла вдруг выяснил, что утилиты MAKESKEL и FPDOC некорректно обрабатывают директивы IfDef и IfNDef при наличии каких-либо символов между условным идентификатором и закрывающей скобкой }. Анализ показал, что это обусловлено ошибкой в реализации класса TPascalScanner, который входит в состав модуля PSCANNER - файл модуля: $(LazarusDir)\FPC\3.0.4\SOURCE\PACKAGES\FCL-PASSRC\src\pscanner.pp, который является частью Free Component Library. По данной ошибке заведен запрос на FreePascal bugtracker'е: issue ID 0034711. |
Из-за особенностей реализации в языке FreePascal применение внутри других циклов цикла FOR … IN … DO для перечислимых классов может привести к увеличению времени выполнения программ |
При подготовке справочного файла формата CHM обнаружил ошибку в редакторе документации LazDE. По данной ошибке заведен запрос на FreePascal bugtracker'е: issue ID 0034631. |