如何用更新的CFString替换替换旧的ParamText / StandartAlert?

时间:2010-01-11 14:52:38

标签: macos unicode cfstring

ParamText()是替换基于Pascal字符串的字符串中的参数的一种非常古老的方法。此外StandardAlert还没有完全准备好Unicode。

新的消息框(不是那么新)替换是CFUserNotificationDisplayNotice但是这个预期CFString我发现如果我要切换到使用CFString我无法使用ParamText参数替换了。


Str255 alertString; // PascalString, yuck!
ParamText(NULL, NULL, minString, maxString);
localize( "A value between ^2 and ^3 is required.", &alertString );
StandardAlert( kAlertNoteAlert, (const unsigned char *)&alertString, nil, nil, &itemHit );

我发现ParamText不再适用于新的对话框,并且Apple忘记指定如何使用它们。

是否有任何替代品可以不要求我更改字符串中的原始参数格式?

1 个答案:

答案 0 :(得分:1)

我发现自己是一个解决方案,但我对此并不满意。


CMutableStringRef alertString2;
...
alertString2 = CFStringCreateMutableCopy(NULL, CFStringGetLength(alertString), alertString);
CFStringFindAndReplace( alertString2, 
        CFSTR("^2"), 
        minRange,  // another CFString
        CFRangeMake(0, CFStringGetLength(alertString2)),
        0);