Последние записи
- Как в Delphi XE обнулить таймер?
- Изменить цвет шрифта TextBox на форме
- Ресайз PNG без потери прозрачности
- Вывод на печать графического файла
- Взаимодействие через командную строку
- Перенести программу из Delphi в Lazarus
- Определить текущую ОС
- Автоматическая смена языка (раскладки клавиатуры)
- Сравнение языков на массивах. Часть 2
- wprintf как напечатать кириллицу
Интенсив по Python: Работа с API и фреймворками 24-26 ИЮНЯ 2022. Знаете Python, но хотите расширить свои навыки?
Slurm подготовили для вас особенный продукт! Оставить заявку по ссылке - https://slurm.club/3MeqNEk
Online-курс Java с оплатой после трудоустройства. Каждый выпускник получает предложение о работе
И зарплату на 30% выше ожидаемой, подробнее на сайте академии, ссылка - ttps://clck.ru/fCrQw
21st
Янв
Создание архивных копий базы
Posted by maloy under Delphi
SunnyCrash
В интернете (http://pblog.ru/lab/?p=360) нашел код где показано что копии будут создаваться после 5ти изменений в таблице но ничего не рработает может кто то поможет?
procedure LookDir(StartDir, Mask : String; List : TStringList);
var
SearchRec : TSearchRec;
begin
if Mask = '' then Mask := '*.*';
if StartDir[Length(StartDir)] <> '' then StartDir := StartDir + '\';
if FindFirst(StartDir+Mask, faAnyFile, SearchRec) = 0 then
begin
repeat
if (SearchRec.Attr and faDirectory) <> faDirectory then
begin
List.Add(StartDir+SearchRec.Name);
end
else
if (SearchRec.Name <> '..') and (SearchRec.Name <> '.') then
LookDir(StartDir + SearchRec.Name + '', Mask, List);
until FindNext(SearchRec) <> 0;
FindClose(SearchRec);
end;
end;
procedure BackUpBD;
var
path1,path2,fname:string;
i,colfiles:integer;
lst:tstringlist;
begin
colfiles:=5;//количество хранимых последних версий файла
path1:=extractfilepath(application.ExeName);
path2:=extractfilepath(application.ExeName)+'BackUpBD\';
if not DirectoryExists(path2) then MkDir(path2);
fname:=path2+formatdatetime('yyyy-mm-dd hh-nn-ss',now)+'-BD.mdb.back';
//BD.mdb - имя файла вашей БД
if copyfile(PChar(path1+'BD.mdb'),PChar(fname),false) = true then
begin
lst := TStringList.Create;
LookDir(path2, '*.back', lst);
if Lst.Count>colfiles then
for i:= 0 to Lst.Count - colfiles-1 do deletefile(lst.Strings);
lst.Free;
end
else
showmessage('Файл с БД не найден!');
end;
может кто то покажет исходник рабочий?
Dark_Spirit
а не проще сделать архивацию после того как пользователь закончил работу с программой?
var
param1, param2:string;
begin
param1:='a -agYYYYMMDD-NN -m5 -inul d:\arxiv\baza_';
param2:='<полный путь к базе>';
shellexecute(0, 'open', 'winrar', PChar(param1+' '+param2), nil, sw_show);
end;
как бы так.
<полный путь к базе> — попробуйте узнать через свойства вашего объекта которым подключаетесь к базе.
param1 — строка ключей для архиватора winrar(всё есть в хелпе)
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
var
a,b: PChar;
begin
a := Pchar('D:\dddd.rar'); //создает архив под названием дддд
b:=Pchar('D:\1\*.*'); // папка с которой берет файлы, для использования нужен ShellApi
ShellExecute(0, 'open', 'WinRAR.exe', Pchar('a -r -ep1 '+a+' '+b), nil, SW_SHOW);
end;
так работает
Похожие статьи
Купить рекламу на сайте за 1000 руб
пишите сюда - alarforum@yandex.ru
Да и по любым другим вопросам пишите на почту
пеллетные котлы
Пеллетный котел Emtas
Наши форумы по программированию:
- Форум Web программирование (веб)
- Delphi форумы
- Форумы C (Си)
- Форум .NET Frameworks (точка нет фреймворки)
- Форум Java (джава)
- Форум низкоуровневое программирование
- Форум VBA (вба)
- Форум OpenGL
- Форум DirectX
- Форум CAD проектирование
- Форум по операционным системам
- Форум Software (Софт)
- Форум Hardware (Компьютерное железо)