Como substituir o antigo Paramtext/Standartalert por substituições mais recentes do CFString?

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

  •  19-09-2019
  •  | 
  •  

Pergunta

ParamText() é uma maneira muito antiga de substituir parâmetros em uma string baseada em seqüências de caracteres Pascal. Também StandardAlert não está muito pronto para unicode.

A nova caixa de mensagem (não tão nova) a substituição é CFUserNotificationDisplayNotice Mas este espera CFString E descobri que, se estou prestes a mudar para usar o CFString, não posso mais usar a substituição de parâmetros do 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 );

Eu descobri isso ParamText Não funciona mais com os novos diálogos e que a Apple esqueceu de especificar como usá -los.

Existe alguma substituição disponível que não exigisse que eu altere o formato dos parâmetros originais em strings?

Foi útil?

Solução

Eu me vi uma solução, mas não estou muito satisfeito com isso.


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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top