and писал(а):а "сверху" pChar'ы неизвестной природы
А что если попытаться экспериментально определить, какие из них какие? Если точек, в которых приходится оперировать с этими PChar'ами (процедур, функций, в т.ч. коллбэков) -- ограниченное количество, и если предположить, что в одни и те же функции поступают PChar'ы одинаковой природы -- вполне можно выяснить эту "природу" экспериментально на некотором количестве примеров, и записать себе в комментарии, чтобы потом освобождать эти PChar'ы правильно.
Например, можно в каждой точке взаимодействия посчитать длину PChar от начала до нулевого байта и сравнить с четырёхбайтным беззнаковым целым, предшествующим указателю. Даже если PChar начинается с самого указателя, и перед ним чужая память, вероятность того, что последние четыре байта этой памяти
всегда совпадают с длиной нашей строки довольно мала. Таким образом, после некоторого числа экспериментов природа PChar'а, попадающего в конкретную функцию прослойки может быть определена, при условии что эта "природа" постоянна для данной функции.
Добавлено спустя 3 минуты 49 секунд:MageSlayer писал(а):Что-то странно, что никто задается вопросом как кроссплатформенно нормализировать строки в fpc/lazarus.
Самому пока не очень-то надо, но вопрос остается.
Угу, и у меня такая же ситуация. Проблема пока смягчается тем, что Windows (пока это большая часть моих пользователей) нормализует юникод в NFC, а в Linux библиотеки стараются не менять нормальную форму. Поэтому сравнение и поиск подстроки с "й" и "ё" чудом работают. Но в Mac OS X используется NFD, т.е. стоит хотя бы одному пользователю под Mac OS X нагенерировать файлов, и начнётся кошмар

MageSlayer писал(а):Тупым поиском по исходникам fpc находится только какая g_utf8_normalize.
packages/gtk2/src/glib/gunicode.inc:236: g_utf8_normalize
Это внешняя функция из glib. Теоретически и в Qt, и в WinAPI тоже есть функции нормализации, которые можно использовать. Т.е. для GUI приложений, где зависимость от графического тулкита уже есть, можно относительно быстро создать реализацию для большинства виджетсетов. Ещё есть
ICU4PAS - обёртка к библиотеке ICU, но это внешняя разделяемая библиотека довольно ощутимого размера, которую не очень хочется таскать за собой.
MageSlayer писал(а):Есть у кого наработки?
Надо же как-то сравнивать строки, да поиск подстроки в utf8 тоже никто еще не отменял!
Нативных наработок без внешних зависимостей не знаю. Если кто-нибудь найдёт или напишет, да ещё и сообщит на форуме -- будет просто замечательно.