Почему я получаю неверные данные в моей CString, отформатированной с использованием Format ()? - PullRequest
0 голосов
/ 15 декабря 2010
LRESULT CFlashWnd::OnScannerProgress( WPARAM wParam, LPARAM lParam )
{
    ScannerProgress *pEvent = (ScannerProgress *)wParam;

    CString scannerAreaText = _T("");
    scannerAreaText.Format(_T("<B>Scanning%3A</B> <font face='Arial' size='10'>%s</font>"), pEvent->pszScanner);

    CString scanProgressText = _T("");
    scanProgressText.Format(_T("<B>Scan Progress%3A</B> <font face='Arial' size='10'>%f</font>"), pEvent->dwScanPercent);

    CString scanProgressBarValue = _T("");
    scanProgressBarValue.Format(_T("%f%"), pEvent->dwScanPercent);

    if(pEvent->pszScanItem)
        free((void *)pEvent->pszScanItem);

    if(pEvent->pszScanner)
        free((void *)pEvent->pszScanner);

    delete pEvent;

    return 0;
}

Я продолжаю получать забавные значения и / или сбои. Любые предложения приветствуются.

Ответы [ 2 ]

2 голосов
/ 15 декабря 2010

Вместо% 3A используйте %% 3A.

1 голос
/ 15 декабря 2010

Я не уверен, но вам следует дважды проверить% 3A в строках формата. Знак процента, как вы знаете, указывает на заполнитель.

...