Index: src/ch/StringHelpers.cpp =================================================================== diff -u -N -r387751793d274e49253e796ca7cec4f3d0cf07a9 -r44a2ec5f1eb0a435b56daef42ef5fe3b7a91da0d --- src/ch/StringHelpers.cpp (.../StringHelpers.cpp) (revision 387751793d274e49253e796ca7cec4f3d0cf07a9) +++ src/ch/StringHelpers.cpp (.../StringHelpers.cpp) (revision 44a2ec5f1eb0a435b56daef42ef5fe3b7a91da0d) @@ -58,3 +58,39 @@ return pszBuffer; } + +CString GetSizeString(double dData) +{ + if(dData < 0.0) + dData = 0.0; + + CString strResult; + if(dData < 1200.0) + strResult.Format(_T("%.2f %s"), dData, GetResManager().LoadString(IDS_BYTE_STRING)); + else if(dData < 1228800.0) + strResult.Format(_T("%.2f %s"), static_cast(dData) / 1024.0, GetResManager().LoadString(IDS_KBYTE_STRING)); + else if(dData < 1258291200.0) + strResult.Format(_T("%.2f %s"), static_cast(dData) / 1048576.0, GetResManager().LoadString(IDS_MBYTE_STRING)); + else + strResult.Format(_T("%.2f %s"), static_cast(dData) / 1073741824.0, GetResManager().LoadString(IDS_GBYTE_STRING)); + + return strResult; +} + +CString GetSizeString(ull_t ullData, bool bStrict) +{ + if(ullData < 0) + ullData = 0; + + CString strResult; + if(ullData >= 1258291200 && (!bStrict || (ullData % 1073741824) == 0)) + strResult.Format(_T("%.2f %s"), (double)(ullData / 1073741824.0), GetResManager().LoadString(IDS_GBYTE_STRING)); + else if(ullData >= 1228800 && (!bStrict || (ullData % 1048576) == 0)) + strResult.Format(_T("%.2f %s"), (double)(ullData / 1048576.0), GetResManager().LoadString(IDS_MBYTE_STRING)); + else if(ullData >= 1200 && (!bStrict || (ullData % 1024) == 0)) + strResult.Format(_T("%.2f %s"), (double)(ullData / 1024.0), GetResManager().LoadString(IDS_KBYTE_STRING)); + else + strResult.Format(_T("%I64u %s"), ullData, GetResManager().LoadString(IDS_BYTE_STRING)); + + return strResult; +}