Есть DLL и прога к ней, написанные на Lazarus. Из проги в DLL нужно передавать пути к файлам. Пока использую обычный String в программе и библиотеке, PChar для передачи и простое приведение типов PChar(…) и Strimg(…) и имею возможность передавать только латиницу, т.е. “C\ля ля ля\курица с грибами.txt” не катит.
Как сделать, чтобы прокатило?
Лучше юникод, а не просто кириллицу )
В Дельфи с 2009 String и PChar стали альясами для юникодной версии строк вместо AnsiString/PAnsiChar. В Лазарусе вроде тоже.
Может это поможет.
google.com/search?q=lazarus+dll+unicode
Должен признать, что я тупанул. Строки нормально передаются в DLL через PChar, кодировка UTF-8. Проблема была в функциях доступа к файлу, которым подавай ANSI, а не UTF-8. Поставил везде Utf8ToAnsi().
WinApi? Там есть W (UTF-16) версии функций. CreateFileW function (fileapi.h) - Win32 apps | Microsoft Docs
Или какой-нибудь TFileStream лазаруса.
Суть в том, что я перевожу очень старую программу с Фортрана-77, исходник которой содержит 0 комментариев, имена переменных, которые ни о чем не говорят, обилие goto. Те же файлы открываются в одной подпрограмме, наполняются во второй, закрываются в третьей. Я решил перевести на паскаль максимально похоже насколько это возможно. Файловые потоки и широкие функции - на потом)