Перво-наперво, это относится к древним технологиям. Порт программы, над которым я работаю, поддерживается в 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=?
Вы можете использовать следующий фрагмент:
HFSString.length=(uint16)CFStringGetLength(fileName);
CFStringGetCharacters(filename, CFRangeMake(0, CFStringGetLength(filename)), HFSString.unicode);
Тем не менее, убедитесь, что ваше имя файла допустимо и, в частности, его длина не превышает 255 символов Юникода. В противном случае вам придется столкнуться с последствиями переполнения буфера.