procedure TFormMain.BtnStartClick(Sender: TObject);
var
FilesBkp: TStringList;
i:integer;
f: File of byte;
tbk,udisk:integer;
Info : TSearchRec;
Attributes: Integer;
CFolder,cFile,TDisk:String;
FSpace,FSpaceD:longint;
Disklt:Array[0..24]of String;
begin
Attributes := Attributes or faHidden;
LogFile:= TMemo.Create(nil);
FilesBkp := TStringList.Create;
tbk:=0;
Disklt[1]:='A:\';
Disklt[2]:='B:\';
Disklt[3]:='C:\';
Disklt[4]:='E:\';
Disklt[5]:='F:\';
Disklt[6]:='G:\';
Disklt[7]:='H:\';
Disklt[8]:='I:\';
Disklt[9]:='J:\';
Disklt[10]:='K:\';
Disklt[11]:='L:\';
Disklt[12]:='M:\';
Disklt[13]:='N:\';
Disklt[14]:='O:\';
Disklt[15]:='P:\';
Disklt[16]:='Q:\';
Disklt[17]:='R:\';
Disklt[18]:='S:\';
Disklt[19]:='T:\';
Disklt[20]:='U:\';
Disklt[21]:='V:\';
Disklt[22]:='X:\';
Disklt[23]:='Y:\';
Disklt[24]:='Z:\';
try
if( ETFolder.Text<>'') then begin
for i:=0 to LbFolders.Items.Count-1 do begin
FindAllFiles(FilesBkp, LbFolders.Items[i] , '*.*', true); //find e.g. all pascal sourcefiles
end;
// ShowMessage(Format('Files for backup %d ', [Filesbkp.Count]));
For i:=0 to FilesBkp.Count -1 do begin
AssignFile(f, FilesBkp[i]);
// LBFiles.Items.Add(FilesBkp[i]);
Reset(f);
tbk:=tbk+FileSize(f);
CloseFile(f)
end;
if( LbFiles.Items.Count > 0 ) then begin
for i:=0 to LbFiles.Items.Count-1 do begin
AssignFile(f,LbFiles.Items[i]);
Reset(f);
tbk:=tbk+FileSize(f);
CloseFile(f)
end;
end;
StatusBar1.Panels[0].Text:='Total space required for Backup: '+ FloatToStr(tbk div (1024*1024))+' MB';
TDisk:=UpperCase( Copy(ETFolder.Text, 0, Pos('\',ETFolder.Text)));
for i:=0 to length(DiskLt) do begin
if( DiskLt[i] = TDisk ) then begin
udisk:=i;
break;
end;
end;
FSpaceD:=DiskFree(udisk);
FSpace:= FSpaceD div (1024*1024) ; // Mega Bit
If Not DirectoryExists(ETFolder.Text) then begin
If Not CreateDir (ETFolder.Text) Then
LogFile.Lines.Add('Error Cerate folder ' +ETFolder.Text );
end;
for i:=0 to LBFolders.Count-1 do begin;
SDD.FileName:= LbFolders.Items[i];
cFolder:= Copy(SDD.FileName, Rpos('\',SDD.FileName)+1, length(SDD.FileName)-Rpos('\',SDD.FileName));
If Not DirectoryExists( ETFolder.Text+'\'+cfolder) then
if Not CreateDir (ETFolder.Text+'\'+cfolder) Then
LogFile.Lines.Add('Error cerate folder '+ ETFolder.Text+'\'+Info.name);
if FindFirst(SDD.FileName + '\*.*', faAnyFile and faDirectory, Info)=0 then begin
repeat
if( (Info.Attr and faDirectory=0) ) then begin
if not FileUtil.CopyFile(SDD.FileName+'\'+info.Name , ETFolder.Text+'\'+cfolder+'\'+info.Name, true) then
begin
LogFile.Lines.Add('Failed to copy file : ' + SDD.FileName+'\'+info.Name)
end
end else begin
if (Info.Name <> '.') and (Info.Name <> '..') then begin
If Not DirectoryExists( ETFolder.Text+'\'+cfolder+'\'+info.Name) then
If Not CreateDir (ETFolder.Text+'\'+cfolder+'\'+info.Name) Then
LogFile.Lines.Add('Error cerate folder '+ ETFolder.Text+'\'+cfolder+'\'+Info.name);
// SDD.FileName:=SDD.FileName+'\'+info.Name ;
GetSubFolder(Info.Name , SDD.FileName+'\'+info.Name , ETFolder.Text+'\'+cfolder+'\'+Info.name );
end;
end;
until FindNext(Info) <> 0;
FindClose(Info);
end;
end;
for i:=0 to LBFiles.Count-1 do begin
cFile:= Copy(LbFiles.Items[i] , Rpos('\',LbFiles.Items[i])+1, length(LbFiles.Items[i])-Rpos('\',LbFiles.Items[i]));
if not FileUtil.CopyFile(LbFiles.Items[i] , ETFolder.Text+'\'+cFile, true) then begin
LogFile.Lines.Add('Failed to copy file : ' + LbFiles.Items[i])
end
end;
LogFile.Lines.SaveToFile(GetUserDir+'\Documents'+'\sbackuplog.log');
end else begin
ShowMessage('Backup can''t create don''t has targer folder information');
ETFolder.SetFocus;
end;
finally
Filesbkp.Free;
end;
end;