Уже длительное время мучаюсь с написанием функции для преобразования char * из С/С++ в FreePascal'вский UTF8String. И каждый раз терплю неудачу, бросаю это дело, а затем снова начинаю и все безрезультатно. Вот и решил обратиться за помощью.
Если кратко, есть потрясающая библиотека, написанная на паскале, называется - ZenGL. Библиотека эта кроссплатформенная, и очень шустро рисует на Linux. С паскалем я увы знаком не сильно, школьная программа да и только, изучаю я сейчас С/С++. В общем, все функции в либе принимают в качестве аргументов значения типа UTF8String, и дабы не переделывать всю библиотеку решил запилить функцию для конвертирования из char. Почитал Вики и справку по встроенным функциям, вроде разобрался, пишу функцию, компилю библиотеку, подключаю к своему проекту, проект компилится без ошибок, но при запуске крашится. Уже не знаю, что и где копать, голова кипит. Может кто писал уже библиотеки на паскале для последующего использования с другими языками программирования, поделитесь опытом.
Привожу свою последнюю версию функции, строго не судите со строками в паскале так и не разобрался как следует, их тут просто тьма какая-то:
- Код: Выделить всё
function util_PCharToUTF8String(some_text : PChar) : UTF8String;
var
temp_utf8string : unicodestring;
begin
DefaultAnsi2UnicodeMove(some_text, temp_utf8string, StrLen(some_text));
Result := UTF8Encode(temp_utf8string);
end