Что мне нужно: мониторить папку на предмет добавления новой картинки, если она есть - распечатать. Мониторинг сделал через ReadDirectoryChangesW (нарыл пример в инете). Но там имя файла вытаскивается в PWideChar:
- Код: Выделить всё
Ptr:=lpBuf;
MyStruct:=PFileNotifyInformation(Ptr)^;
//repeat
// Выделяем память под имя файла
GetMem(FileName,MyStruct.FileNameLength+2);
// Очищаем память - чтобы последним символом после копирования
// был бы #0 нуль
ZeroMemory(FileName,MyStruct.FileNameLength+2);
// WinAPI функция для копирования Unicode строки
lstrcpynW(FileName,MyStruct.FileName,
MyStruct.FileNameLength div 2+1);
После чего я отдаю FileName в LoadFormFile, чтобы загрузить в TPicture добавленную картинку и потом её вывести на canvas принтера:
- Код: Выделить всё
MyImg.LoadFromFile(katalog+FileName);
katalog - константа равная 'C:\sav_file\'
Если в имени русских букв нет, то всё отлично. А вот если есть, то LoadFromFile не отрабатывает. Возникает вопрос - как корректно отдать ей имя в юникодовской кодировке? При том, что параметр у LoadFromFile - типа string?