4319b4ad69
ToInt() previously wrapped strtol() with a nullptr endptr, so a failed conversion was indistinguishable from a legitimate 0 (matching the old TString::Atoi() behaviour). Switch the implementation to std::from_chars and add an optional `bool *ok` out-parameter that reports success: it is set to false on a non-numeric string or an out-of-range value, true otherwise. Leading whitespace is skipped and trailing characters are ignored, preserving the Atoi-like prefix semantics. The parameter defaults to nullptr, so existing call sites keep compiling unchanged. Convert the parse-validation call sites in PMsrHandler to the single -parse ToInt(token, &ok) form, replacing the IsInt() guard + separate ToInt() (which parsed every token twice). All downstream >0 / >=0 / range / enum checks are preserved. Left untouched the call sites where IsInt() acts as a structural discriminator rather than a numeric validator (write path, xy-data index-vs-label, fParamInUse usage scans) and the IsFloat-guarded ToInt offsets, where switching to ToInt(&ok) would change parsing semantics. All 85 integration tests pass. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>