Problem mit Commandline



  • Hallo !

    Ich stehe gerade auf dem Schlauch mit einem Commandline Problem.
    Die Commandline sieht wie folgt aus:

    c:\myfile.exe -abc:c:\test\temp\folder\test.dat -f
    

    Bisher hatte ich nur die Commandline ohne den zusätzlichen Parameter "-f". Und die habe ich so ausgelesen:

    /* sCmd ist vom Typ CString und enthält
       die ersten 5 Zeichen der Variable m_lpCmdLine (Commandline)
    */
    if (sCmd == "-abc:") {
      // ...
    }
    elseif (sCmd == "-def:") {
      // ...
    }
    // ...
    

    Die Datei konnte ich dann bequem an eine Funktion übergeben:

    ArbeiteMitDatei(&m_lpCmdLine[5]);
    

    Nun habe ich aber noch den letzten Parameter "-f", der ja nicht mehr zum Dateinamen gehört und der auch vorangestellt sein kann.

    Hat jemand eine Idee wie ich die Commandline korrekt und sinnvoll parsen kann ?



  • hallo,

    ich kenn das nur so :

    int main(char* argv[])// in argv sind die übergebenen parameter
    {
        //
        return 0;
    }
    

    Mfg TaccoGo



  • Du solltest wohl nach Leerzeichen trennen und dann jeden Command einzeln verarbeiten:

    CString s(m_lpCmdLine), sCmd;
    int nPos = -1, nOldPos = -1;
    
        do
        {
            // Leerzeichen finden
            nPos = s.Find( " ", nOldPos + 1 );
    
            // vom letzten Leerzeichen bis zum neuen Leerzeichen ist ein Command
            if( nPos >= 0 )
                sCmd = s.Mid( nOldPos + 1, nPos );
            // Falls kein Leerzeichen (mehr) da, dann ist es entweder nur ein
            // Parameter oder es ist das letzte
            else
    	   sCmd = s.Mid( nOldPos );
    
            // hier hat sCmd einen Command und will verarbeitet werden
    
            nOldPos = nPos;
        }while( nPos >= 0 );
    

Log in to reply