代码之家  ›  专栏  ›  技术社区  ›  sorin

如何将旧的paramtext/standartalert替换为新的cfstring替换?

  •  1
  • sorin  · 技术社区  · 16 年前

    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 不再使用新对话框,而且苹果忘记指定如何使用它们。

    是否有任何替换可用,不需要我更改字符串中的原始参数格式?

    1 回复  |  直到 16 年前
        1
  •  1
  •   sorin    16 年前

    我找到了一个解决办法,但我不太满意。

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