Servus,
ich habe folgenden Code mit Visual Studio 2010 erstellt...
void MarshalString ( String ^ s, string& os ) {
using namespace Runtime::InteropServices;
const char* chars = (const char*)(Marshal::StringToHGlobalAnsi(s)).ToPointer();
os = chars;
Marshal::FreeHGlobal(IntPtr((void*)chars));
}
string filesys(HANDLE hSearch, string prepath) {
string doit = "";
WIN32_FIND_DATA FData;
if (hSearch == INVALID_HANDLE_VALUE) {doit += "ungültige suche!";}
do {
////////////////////////////////////////////////////////
// Umwandlungen
char ch[260];
char DefChar = ' ';
WideCharToMultiByte(CP_ACP,0,FData.cFileName,-1, ch,260,&DefChar, NULL);
string foldername(ch);
////////////////////////////////////////////////////////
// Gültiger Ordner
if (FData.dwFileAttributes == FILE_ATTRIBUTE_DIRECTORY && foldername != "..") {
//doit += "mput *.*\n";
doit += foldername + "\n";
string path = prepath + foldername + "\\\\";
string newsearch = prepath + foldername + "\\\\*";
LPCWSTR newsearchpath = s2ws(newsearch);
WIN32_FIND_DATA FData;
HANDLE rekus = (newsearchpath,&FData);
doit += path;
doit += this->filesys(rekus, path);
}
} while (FindNextFile(hSearch,&FData) != 0);
FindClose(hSearch);
return doit;
}
LPCWSTR s2ws(const std::string& s) {
int len;
int slength = (int)s.length() + 1;
len = MultiByteToWideChar(CP_ACP, 0, s.c_str(), slength, 0, 0);
wchar_t* buf = new wchar_t[len];
MultiByteToWideChar(CP_ACP, 0, s.c_str(), slength, buf, len);
LPCWSTR r(buf);
delete[] buf;
return r;
}
}
Alles anzeigen
Ich versuche mit der Methode einen Subfolder (hier installer_stable) rekursiv durchsuchen zu lassen, damit ich mir später eine FTP-Command-File erstellen kann die mir dann die Ordner erstellt und alle Files hochläd. Das Problem hier: wenn ich die Methode rekursiv aufrufen lassen will, bekomm ich eine System.Runtime.InteropServices.SEHException. Bin jetzt noch nicht soo lange bei C++ dass mir das irgendwas sinnvolles sagen könnte.. hab nach der Exception gegooglet, aber is nicht wirklich was gescheites bei rausgekommen... In der MartialString Methode kommt der Namespace vor, deshalb hab ich die einfahc mal mitgepostet...
wäre super wenn sich jemand die Zeit nehmen könnte und da mal schnell drübergucken kann... langsam verzweifel ich an dem teil, zwischendurch hats mal funktioniert, dann ging garnichts und musste quasi wieder bei 0 anfangen.. :-S
mfg Sphero