新しいCFStringに代替して、古いParamText / StandartAlertを交換する方法は?

StackOverflow https://stackoverflow.com/questions/2042535

  •  19-09-2019
  •  | 
  •  

質問

ParamText()はパスカル文字列に基づいて、文字列内のパラメータを置き換える本当に古い方法です。またStandardAlertはかなりのUnicodeの準備ができていない。

新しいメッセージボックス(それほど新しいものではない)の交換がCFUserNotificationDisplayNoticeですが、この1つは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 );

私はAppleがそれらを使用する方法を指定するのを忘れていることParamTextはもう新しいダイアログでは動作しないことが判明してます。

の文字列の元のパラメータの形式を変更するために私を必要としない利用可能な代替はありますか?

役に立ちましたか?

解決

私は自分自身に解決策を見つけたが、私はそれについて非常に満足していませんよ。


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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top