przez geskom » wtorek, 2 wrzeÅ›nia 2008, 14:27
Podajesz za mało informacji: jak kasujesz katalog i jakiej wersji C++ Buildera używasz?, podaj swój kod...
Poniżej umieszczam metodę DeleteDirectory() na wykasowanie katalogu z plikami wyszukana z borland.public.cppbuilder.vcl.components.using ponieważ popularne RemoveDir() nie usunie katalogu jeśli są w nim pliki. Jeżeli chcesz złapać wszystkie błędy to należy podany kod umieścić w klauzurze try { ... } catch(...){}; np.
try
{
// tutaj jest nasz kod, np. kasujemy pliki
}
catch (...)
{
// tutaj łapiemy wszystkie wyjątki ale ich nie obsługujemy
}
void DeleteDirectory(HWND WindowHandle, AnsiString FromDir, bool Silent)
{
char ddFrom[256]; memset(ddFrom, 0, 256); sprintf(ddFrom, "%s\0\0", FromDir.c_str());
char *dFrom = ddFrom;
SHFILEOPSTRUCT ShFileOpStruct; memset(&ShFileOpStruct, 0, sizeof(SHFILEOPSTRUCT));
ShFileOpStruct.hwnd = WindowHandle;
ShFileOpStruct.wFunc = FO_DELETE;
ShFileOpStruct.pFrom = dFrom;
ShFileOpStruct.pTo = 0;
if (Silent) ShFileOpStruct.fFlags = FOF_NOCONFIRMATION + FOF_SILENT + FOF_ALLOWUNDO;
else ShFileOpStruct.fFlags = FOF_NOCONFIRMATION + FOF_ALLOWUNDO;
ShFileOpStruct.fAnyOperationsAborted = false;
ShFileOpStruct.hNameMappings = NULL;
ShFileOpStruct.lpszProgressTitle = NULL;
SHFileOperation(&ShFileOpStruct);
}