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 stattCmdPARAMETER.Right(foundpos); CmdPARAMETER.Mid(foundpos);
CmdPARAMETER.ReverseFind( '\' ) gibt 9 zurück
und mitCmdPARAMETER.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
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)