Прежде всего, это касается древних технологий. Порт программы, над которым я работаю, поддерживается в 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 символов Юникода. В противном случае вам придется столкнуться с последствиями переполнения буфера.