1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118
|
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "UnitTestMoveFolder.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TFormXMoveFolder *FormXMoveFolder;
bool QuitterXMoveFolder=false;
char DestFolder[1000];
//---------------------------------------------------------------------------
__fastcall TFormXMoveFolder::TFormXMoveFolder(TComponent* Owner)
: TForm(Owner){}
void __fastcall TFormXMoveFolder::FormCreate(TObject *Sender)
{
MEMOSCREEN->Clear();
xMoveFolder("c:\\data\\line5","d:\\titi");
}
//---------------------------------------------------------------------------
void __fastcall TFormXMoveFolder::FormCloseQuery(TObject *Sender, bool &CanClose)
{
QuitterXMoveFolder = true;
}
// --------------------------------------------------------------------------
// ----------- XmoFile Deplacements des dossiers ---------------
// --------------------------------------------------------------------------
void __fastcall TFormXMoveFolder::xMoveFolder(char FolderSource[],char FolderDest[])
{
char CurrentDrivePath[1000];
lstrcpy(DestFolder,FolderDest);
if (FolderSource[lstrlen(FolderSource)-1]!='\\') lstrcat(FolderSource,"\\");
if (*(FolderSource+1)!=':')
{
DWORD lplength;
if (!GetCurrentDirectory(lplength,CurrentDrivePath)) lstrcpy(CurrentDrivePath,"c:");
else
CurrentDrivePath[2]=NULL;
lstrcat(CurrentDrivePath,FolderSource);
lstrcpy(FolderSource,CurrentDrivePath);
}
//Pointertmp=(FolderSource+2);
Char TMPDestFolder[1000];
lstrcpy(TMPDestFolder,DestFolder);lstrcat(TMPDestFolder,(FolderSource+2));
int length=lstrlen(TMPDestFolder);
for (int i=0; i<length; i++)
{
if (TMPDestFolder[i]=='\\')
{
lstrcpyn(CurrentDrivePath,TMPDestFolder,(i+1));
CreateDirectory(CurrentDrivePath,NULL);
}
}
QuitterXMoveFolder=false;
xScanMoveFolder(FolderSource);
RmDir(FolderSource);
}
//---------------------------------------------------------------------------
// --------------------------------------------------------------------------
// ----------- Fonction récursive des placements des dossiers ---------------
// --------------------------------------------------------------------------
void __fastcall TFormXMoveFolder::xScanMoveFolder(char FolderSource[])
{
char CopySource[1000];
char CopyDest[1000];
char CopyFile[1000];
lstrcpy(CopySource, FolderSource);
WIN32_FIND_DATA w32fd;
char Nom[1000];
lstrcpy(Nom, CopySource); lstrcat(Nom, "*.*");
HANDLE h = FindFirstFile(Nom, &w32fd);
bool res = true;
if (h!=INVALID_HANDLE_VALUE)
{
while (res && !QuitterXMoveFolder)
{
if (lstrcmp(w32fd.cFileName, "..") && lstrcmp(w32fd.cFileName, "."))
{
if (w32fd.dwFileAttributes&FILE_ATTRIBUTE_DIRECTORY)
{
// Traitement des Dossiers
char N[1000];
lstrcpy(N, CopySource); lstrcat(N, w32fd.cFileName);
lstrcpy(CopyDest,DestFolder);lstrcat(CopyDest,(N+2));
MEMOSCREEN->Lines->Add(AnsiString("creat ")+ CopyDest);
MkDir(CopyDest);
lstrcat(N, "\\");
xScanMoveFolder(N);
lstrcpyn(CopyDest,N,(strlen(N)));
//RemoveDirectory(CopyDest);
//RmDir("c:\\data\\line5\\FOERSTER\\empty\\2\\25\\lot2"); la sa marche
AnsiString toto=CopyDest;
RmDir(toto); // Ici ca me marche pas
RemoveDirectory(toto.c_str());
MEMOSCREEN->Lines->Add(AnsiString("del")+ CopyDest+AnsiString("del"));
}
else
{
// Traitement des Fichiers
strcpy(CopyFile, CopySource);
lstrcat(CopyFile, w32fd.cFileName);
lstrcpy(CopyDest,DestFolder);lstrcat(CopyDest,(CopyFile+2));
MEMOSCREEN->Lines->Add(AnsiString("fichsource ")+ CopyFile);
MEMOSCREEN->Lines->Add(AnsiString("fichDest ")+ CopyDest);
MoveFile(CopyFile,CopyDest);
}
}
res = FindNextFile(h, &w32fd);
Application->ProcessMessages();
}
}
} |
Partager