Come sostituire vecchia ParamText / StandartAlert con più recenti sostituzioni CFString?

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

  •  19-09-2019
  •  | 
  •  

Domanda

ParamText() è un davvero vecchio modo di sostituzione di parametri in una stringa che si basa su stringhe Pascal. Inoltre non è abbastanza StandardAlert Unicode pronto.

La nuova finestra di messaggio (non così nuovo) la sostituzione è CFUserNotificationDisplayNotice ma questo si aspetta CFString e ho scoperto che se sto per passare ad usare CFString io non sono in grado di utilizzare più ParamText la sostituzione del parametro.


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

ho scoperto che ParamText non funziona con le nuove finestre di dialogo più e che Apple ha dimenticato di specificare come usarli.

C'è qualche sostituzione a disposizione che non mi richiederebbe di modificare il formato di parametri originali in stringhe?

È stato utile?

Soluzione

mi sono trovato una soluzione, ma io non sono molto soddisfatto di esso.


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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top