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

Перво-наперво, это относится к древним технологиям. Порт программы, над которым я работаю, поддерживается в 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=?

0

Решение

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

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

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

1

Другие решения


По вопросам рекламы [email protected]