Comment remplacer l'ancien ParamText / StandartAlert avec les nouveaux remplacements de CFString?

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

  •  19-09-2019
  •  | 
  •  

Question

ParamText() est un moyen vraiment vieux de remplacer les paramètres dans une chaîne qui est basée sur des chaînes Pascal. Aussi StandardAlert est pas tout à fait prêt Unicode.

La nouvelle boîte de message (pas nouveau) de remplacement est CFUserNotificationDisplayNotice mais celui-ci attend CFString et je trouve que si je suis sur le point de passer à l'aide CFString Je ne suis pas en mesure d'utiliser le paramètre ParamText de remplacement plus.


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 );

J'ai découvert que ParamText ne fonctionne pas avec les nouvelles boîtes de dialogue plus et que Apple a oublié de spécifier comment les utiliser.

Y at-il de remplacement disponible qui ne me obliger à modifier le format des paramètres d'origine dans les chaînes?

Était-ce utile?

La solution

Je me suis trouvé une solution mais je ne suis pas très heureux à ce sujet.


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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top