N
Falls es noch jemanden interessiert oder falls es einer braucht. Inzwischen ist es soweit fertig und funktioniert.
Noch was zur Problemlösung: Nur "++ulPosition" zu verwenden funktioniert auch nicht da die Variable nur in der Unterfunktion erhöht werden darf.
string CParseFile::rekur(vector<u32> & vecDimensions, string strLine, u32 ulPosition)
{
if ( (vecDimensions.size() - 1) <= ulPosition)
// Im letzten Element angekommen
{
u32 ulTmpValue = strtol( (strLine.substr(1)).c_str(), NULL, 10);
if ( ((vecDimensions.at(ulPosition)) - 1) > ulTmpValue )
// Element ist erhöhbar
{
ulTmpValue++;
return ("[" + boost::lexical_cast<string>(ulTmpValue) + "]" );
}
else
// Element nicht weiter erhöhbar
{
return ( "-[0]" );
}
}
else
{
u32 tmpPosition = ulPosition;
++ulPosition;
string strTmp = rekur( vecDimensions, strLine.substr( strLine.find("]")+1 ), ulPosition);
if ( strTmp[0] == '-' )
// Alle Unterelemente konnten nicht erhöht werden -> dieses Element muss erhöht werden falls möglich
{
strTmp = strTmp.substr(1);
u32 ulTmpValue = strtol( (strLine.substr(1)).c_str(), NULL, 10);
if ( ((vecDimensions.at(tmpPosition)) - 1) > ulTmpValue )
// Element ist erhöhbar
{
ulTmpValue++;
strTmp.insert(0, ("[" + boost::lexical_cast<string>(ulTmpValue) + "]") ) ;
return strTmp;
}
else
{
return ("-[" + strTmp);
}
}
else
{
u32 ulTmpValue = strtol( (strLine.substr(1)).c_str(), NULL, 10);
strTmp.insert(0, ("[" + boost::lexical_cast<string>(ulTmpValue) + "]") ) ;
return strTmp;
}
}
}