Problem mit ReverseFind



  • hier mal die Funktion

    foundpos = CmdPARAMETER.ReverseFind( '\\' ) ;
       ProzessName = CmdPARAMETER.Right(foundpos) ;
    

    CmdPARAMETER enthält folgenden String

    \set\snip\idle
    

    so ich wollte mit der funktion das idle haben

    nur enthält der string anschließend

    snip\idle
    

    hat jemand ne Ahnung Warum



  • Aloha,

    kleiner Denkfehler deinerseits.

    Du findest die ersten "\" an der neunten Pos.
    Du willst aber Stringlänge - pos von rechts lesen.

    Richtig wäre

    ProzessName = CmdPARAMETER.Right(CmdPARAMETER.GetLength()-foundpos-1);
    

    Grüße

    BOA



  • Du benutzt die falsche Funktion
    Benutze statt

    CmdPARAMETER.Right(foundpos);
    CmdPARAMETER.Mid(foundpos);
    

    CmdPARAMETER.ReverseFind( '\' ) gibt 9 zurück
    und mit

    CmdPARAMETER.Right(foundpos);
    

    gibt er dir von hinten ab gezählt 9 Zeichen zurück

    also

    \ s e t \ s n i p \ i d l e
    ----------9 8 7 6 5 4 3 2 1
    ->s n i p \ i d l e



  • OT: Du wilst aber hoffentlich nicht über die Commandozeilen-Parameter auf den Namen der EXE schliessen, oder? Das kann nämlich ganz schön schief gehen...

    Verwende hierzu lieber "GetModuleName(NULL, ...)"



  • nein Jochen ich möcht einfach 3 Parameter der kommandozeile auswerten

    @topic

    ich habe mich an diese Beispiel gehalten

    //typedef CStringT< TCHAR, StrTraitATL< TCHAR > > CAtlString;
    
    CAtlString s( _T("abcdef") );
    _ASSERT( s.Right(2) == _T("ef") );
    

    hab das dann wohl missverstanden

    na jetzt weiss ich ja worans lag :p (fürs nächste mal)


Anmelden zum Antworten