Skip to content

Commit

Permalink
Fixes
Browse files Browse the repository at this point in the history
  • Loading branch information
r57zone committed Jan 2, 2020
1 parent 582c3f3 commit 16da5b0
Show file tree
Hide file tree
Showing 3 changed files with 57 additions and 50 deletions.
2 changes: 1 addition & 1 deletion Source/Languages/English.ini
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@ ID_ACTIVE=Active
ID_NAME=Name
ID_LEFT_FOLDER=Left folder
ID_RIGHT_FOLDER=Right folder
ID_RUN=Run
ID_CREATE=Create
ID_OPEN=Open
ID_RUN=Run
ID_ADD=Add
ID_REMOVE=Remove
ID_EXCLUDE=Exclude
Expand Down
2 changes: 1 addition & 1 deletion Source/Languages/Russian.ini
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@ ID_ACTIVE=
ID_NAME=Имя
ID_LEFT_FOLDER=Левая папка
ID_RIGHT_FOLDER=Правая папка
ID_RUN=Запустить
ID_CREATE=Создать
ID_OPEN=Открыть
ID_RUN=Запустить
ID_ADD=Добавить
ID_REMOVE=Удалить
ID_EXCLUDE=Исключить
Expand Down
103 changes: 55 additions & 48 deletions Source/Unit1.pas
Original file line number Diff line number Diff line change
Expand Up @@ -119,58 +119,65 @@ procedure CheckFilesDiff(LocalFolder, RemoteFolder: string);
repeat
Application.ProcessMessages;

if (LocalFile.Name <> '.') and (LocalFile.Name <> '..') then
if (LocalFile.Attr and faDirectory) <> faDirectory then begin

Inc(FilesCounter);

//Если файл отсуствует, то копируем, а если во вторичной папке есть этот файл, то переименовываем
if not FileExists(RemoteFolder + LocalFile.Name) then begin

//Проверяем все файлы во вторичной папке, на случай если файл переименовали
FoundCurrentFile:=false;
if FindFirst(RemoteFolder + '*.*', faAnyFile, RemoteFile) = 0 then
repeat
Application.ProcessMessages;

//Если время файла, размер совпадает и такого файла нет в первичной папке, то переименовываем файл во вторичной папке
//Файл переименован
if (LocalFile.Time = RemoteFile.Time) and (LocalFile.Size = RemoteFile.Size) and (FileExists(LocalFolder + RemoteFile.Name) = false) then begin
Actions.Add('RENAME ' + RemoteFolder + RemoteFile.Name + #9 + RemoteFolder + LocalFile.Name);
//Добавляем в список игнориемых файлов, чтобы он не удалился (до переименования)
ExcludeRenameFiles.Add(RemoteFolder + RemoteFile.Name);
StatusText(ID_FILE_RENAMED + ' ' + LocalFolder + LocalFile.Name);
FoundCurrentFile:=true;
Break;
end;
if (LocalFile.Name = '.') or (LocalFile.Name = '..') then Continue; //Не обрабатываем возвраты папок

//Проверка файлов
if (LocalFile.Attr and faDirectory) <> faDirectory then begin

Inc(FilesCounter);

//Если файл отсуствует, то копируем, а если во вторичной папке есть этот файл, то переименовываем
if not FileExists(RemoteFolder + LocalFile.Name) then begin

//Проверяем все файлы во вторичной папке, на случай если файл переименовали
FoundCurrentFile:=false;
if FindFirst(RemoteFolder + '*.*', faAnyFile, RemoteFile) = 0 then
repeat
Application.ProcessMessages;

//Если время файла, размер совпадает и такого файла нет в первичной папке, то переименовываем файл во вторичной папке
//Файл переименован
if (LocalFile.Time = RemoteFile.Time) and (LocalFile.Size = RemoteFile.Size) and (FileExists(LocalFolder + RemoteFile.Name) = false) then begin
Actions.Add('RENAME ' + RemoteFolder + RemoteFile.Name + #9 + RemoteFolder + LocalFile.Name);
//Добавляем в список игнориемых файлов, чтобы он не удалился (до переименования)
ExcludeRenameFiles.Add(RemoteFolder + RemoteFile.Name);
StatusText(ID_FILE_RENAMED + ' ' + LocalFolder + LocalFile.Name);
FoundCurrentFile:=true;
Break;
end;

until FindNext(RemoteFile) <> 0;
FindClose(RemoteFile);
until FindNext(RemoteFile) <> 0;
FindClose(RemoteFile);

//Если во вторичной папке схожих файлов не найдено, то просто копируем новый файл
//Найден новый файл
if FoundCurrentFile = false then begin
Actions.Add('COPY ' + LocalFolder + LocalFile.Name + #9 + RemoteFolder + LocalFile.Name);
StatusText(ID_FOUND_NEW_FILE + ' ' + LocalFolder + LocalFile.Name);
end;

//Если файл есть
end else if FindFirst(RemoteFolder + LocalFile.Name, faAnyFile, RemoteFile) = 0 then begin

//Если во вторичной папке схожих файлов не найдено, то просто копируем новый файл
//Найден новый файл
if FoundCurrentFile = false then begin
//Если время файла или размер не совпадает, то копируем
//Файл обновлён
if (LocalFile.Time <> RemoteFile.Time) or (LocalFile.Size <> RemoteFile.Size) then begin
Actions.Add('COPY ' + LocalFolder + LocalFile.Name + #9 + RemoteFolder + LocalFile.Name);
StatusText(ID_FOUND_NEW_FILE + ' ' + LocalFolder + LocalFile.Name);
StatusText(ID_FILE_UPDATED + ' ' + LocalFolder + LocalFile.Name);
end;

//Если файл есть
end else if FindFirst(RemoteFolder + LocalFile.Name, faAnyFile, RemoteFile) = 0 then
FindClose(RemoteFile);
end;

//Если время файла или размер не совпадает, то копируем
//Файл обновлён
if (LocalFile.Time <> RemoteFile.Time) or (LocalFile.Size <> RemoteFile.Size) then begin
Actions.Add('COPY ' + LocalFolder + LocalFile.Name + #9 + RemoteFolder + LocalFile.Name);
StatusText(ID_FILE_UPDATED + ' ' + LocalFolder + LocalFile.Name);
end;
//Проверка папок
end else begin
//Создаём папку если её не существует и её нет в списке игнорируемых
if (not DirectoryExists(RemoteFolder + LocalFile.Name)) and (Pos(LocalFolder + LocalFile.Name, ExcludePaths.Text) = 0) then
Actions.Add('MKDIR ' + RemoteFolder + LocalFile.Name);

FindClose(RemoteFile);
end else begin
//Создаём папку если её не существует и её нет в списке игнорируемых
if (not DirectoryExists(RemoteFolder + LocalFile.Name)) and (Pos(LocalFolder + LocalFile.Name, ExcludePaths.Text) = 0) then
Actions.Add('MKDIR ' + RemoteFolder + LocalFile.Name);
CheckFilesDiff(LocalFolder + LocalFile.Name, RemoteFolder + LocalFile.Name);
end;
//Сравниваем файлы
CheckFilesDiff(LocalFolder + LocalFile.Name, RemoteFolder + LocalFile.Name);
end;

until FindNext(LocalFile) <> 0;
FindClose(LocalFile);
Expand Down Expand Up @@ -344,9 +351,9 @@ procedure TMain.FormCreate(Sender: TObject);
ListView.Columns[1].Caption:=Ini.ReadString('Main', 'ID_NAME', '');
ListView.Columns[2].Caption:=Ini.ReadString('Main', 'ID_LEFT_FOLDER', '');
ListView.Columns[3].Caption:=Ini.ReadString('Main', 'ID_RIGHT_FOLDER', '');
RunBtn.Caption:=Ini.ReadString('Main', 'ID_RUN', '');
CreateBtn.Caption:=Ini.ReadString('Main', 'ID_CREATE', '');
OpenBtn.Caption:=Ini.ReadString('Main', 'ID_OPEN', '');
RunBtn.Caption:=Ini.ReadString('Main', 'ID_RUN', '');
AddBtn.Caption:=Ini.ReadString('Main', 'ID_ADD', '');
RemBtn.Caption:=Ini.ReadString('Main', 'ID_REMOVE', '');
ExcludeBtn.Caption:=Ini.ReadString('Main', 'ID_EXCLUDE', '');
Expand Down Expand Up @@ -434,9 +441,9 @@ procedure TMain.RunBtnClick(Sender: TObject);
begin
StopRequest:=false;
ProgressBar.Position:=0;
RunBtn.Enabled:=false;
CreateBtn.Enabled:=false;
OpenBtn.Enabled:=false;
RunBtn.Enabled:=false;
AddBtn.Enabled:=false;
RemBtn.Enabled:=false;
ExcludeBtn.Enabled:=false;
Expand Down Expand Up @@ -624,7 +631,7 @@ procedure TMain.LoadBackupPaths(FileName: string);
//Сохраняем текущий путь для сохранения
CurrentBackupFilePath:=FileName;
end else
//Если файл не найден, то читаем дефолтный путь
//Если файл не найден, то читаем дефолтный файл
CurrentBackupFilePath:=ExtractFilePath(ParamStr(0)) + BACKUP_PATHS_FILE_NAME;


Expand Down

0 comments on commit 16da5b0

Please sign in to comment.