Как преобразовать CFString в HFSUniStr255?

0

Прежде всего, это касается древних технологий. Порт программы, над которым я работаю, поддерживается в Metrowerks Codewarrior 9, целью является PPC.

Для использования в функции MSL C FSRefParentAndFilename_fopen

FILE * FSRefParentAndFilename_fopen(
const FSRefPtr theParentRef,
ConstHFSUniStr255Param theName,
const char *open_mode);

Мне нужен ConstHFSUniStr255Param, который является указателем на HFSUniStr255. У меня есть CFString, содержащий мое имя файла, мой вопрос: как мне преобразовать в HFSUniStr255?

struct HFSUniStr255 {
UInt16 length;
UniChar unicode[255];
};

Пока у меня есть:

HFSUniStr255 HFSString;
FSGetDataForkName(&HFSString);
HFSString.length=(uint16)CFStringGetLength(fileName);
HFSString.unicode=?
Теги:
macos
macos-carbon
codewarrior

1 ответ

1
Лучший ответ

Вы можете использовать следующий фрагмент:

HFSString.length=(uint16)CFStringGetLength(fileName);
CFStringGetCharacters(filename, CFRangeMake(0, CFStringGetLength(filename)), HFSString.unicode);

Однако убедитесь, что ваше имя файла действительно, и, в частности, его длина меньше 255 символов Юникода. В противном случае вам придется столкнуться с последствиями переполнения буфера.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню