Pfad trennen
-
Hi guyz!
ich habe einen öffnen dialog mit multiselect, eine Parametereingabe, in die man mehrere getrennt von simikoli pfade eingeben kann.
Aber create file nimmt nur einen pfad. Wie kann ich die pfade trennen?
ALso:
c:\test1.txt;c:\test2.txt wird zu
c:\test1.txt und c:\test2.txtaber genauso geht das:
c:\test1.txt,test2.txt
wie kann ich das trennen?Vielen Dank.
-
viel spaß... <vector> includen nicht vergessen

CString allepfade = "C:\\test1.txt;c:\\blabla.txt;d:\\mutti.dat";//usw... int pos = 0; vector<CString> vec;//da stehen denn die einzelnen pfade drin... for(int i = 0;;i++) { CString teilstring = allepfade.Tokenize(";",pos); if(teilstring == "") break; vec.push_back(teilstring); } //danach: //vec[0] == C:\\test1.txt //vec[1] == c:\\blabla.txt //vec[2] == d:\\mutti.dat //...
-
Ohne MFC geht das mit _strtok
http://msdn2.microsoft.com/en-us/library/2c8d19sb(VS.71).aspx
-
Gibt es denn nicht eine möglichkeit, mit den shell path handling funcs?
-
geht das denn nicht ohne CString, also ich meine mit den reinen wchar.h-funktionen.
Danke.
-
sry for dp/push
aber ich habe jetzt was ausprobiert, dummerweise landet das in einer entlosschleife. Warum? ich kann da keinen Fehler entdecken.
void Auto(LPWSTR lpPath) { WCHAR path[MAX_PATH + 1]; lstrcpy(path, lpPath); LPWSTR lpPtr = path; while (lpPtr != NULL) { int nLength; LPWSTR lpNextPtr = wcsstr(lpPtr, L";"); // wenn kein weiteres Vorkommen if (lpNextPtr == NULL) { // no further ';', so get the whole string nLength = lstrlen(lpPtr); if (nLength == 0) // no string, nothing to do break; } else { // the difference is the new string nLength = (int)lpNextPtr + 1 /* the ';' char */ + (int)lpPtr; if (nLength == 0) // go on { lpPtr = lpNextPtr; continue; } } // this is the single path WCHAR single[MAX_PATH + 1]; wcsncpy(single, lpPtr, nLength); single[nLength] = L'\0'; /* do whatever you want */ lpPtr = lpNextPtr; } }Vielen Dank.