//______________________________________________________________________________ // [] //` string [] // [] bool GetArg(const char * inStr, string& argValue, const char* argName) { GET_ARG_START; if (*pName != FIELD_HEADER_CHAR) // Ошибка: нет маркера начала значения. return false; pName++; // На начало значения. size_t end_index = strcspn(pName, ARG_NAME_HEADER_STR FIELD_HEADER_STR); if (pName[end_index] == FIELD_HEADER_CHAR) return false; // Ошибка - встретился разделитель полей для скалярного параметра. argValue.Copy(pName, end_index); // Скопировать всё до маркера или до конца строки. return true; }
static const string& GetFarTitleAddons() { // " - Far%Ver%Admin" /* %Ver - 2.0 %Build - 1259 %Platform - x86 %Admin - MFarTitleAddonsAdmin %PID - current PID */ static FormatString strVer, strBuild, strPID; static bool bFirstRun = true; static string strTitleAddons; strTitleAddons.Copy(L" - Far ",7); strTitleAddons += Opt.strTitleAddons; if (bFirstRun) { bFirstRun = false; strVer<<FAR_VERSION.Major<<L"."<<FAR_VERSION.Minor; strBuild<<FAR_VERSION.Build; strPID<<GetCurrentProcessId(); } ReplaceStrings(strTitleAddons,L"%PID",strPID,-1,true); ReplaceStrings(strTitleAddons,L"%Ver",strVer,-1,true); ReplaceStrings(strTitleAddons,L"%Build",strBuild,-1,true); ReplaceStrings(strTitleAddons,L"%Platform", #ifdef _WIN64 #ifdef _M_IA64 L"IA64", #else L"x64", #endif #else L"x86", #endif -1,true); ReplaceStrings(strTitleAddons,L"%Admin",Opt.IsUserAdmin?MSG(MFarTitleAddonsAdmin):L"",-1,true); RemoveTrailingSpaces(strTitleAddons); return strTitleAddons; }