PDA

View Full Version : سوال: ساختن دکمه پشتیبان اطلاعات



behnam_dr
دوشنبه 05 مرداد 1388, 12:31 عصر
من میخوام یه دکمه پشتبان گیری از اطلاعات بسازم که به این صورت عمل کنه.
تمام فایلهای db داخل شاخه یرنامه رو کپی کنه در مسیری که مثلا کاربر در یه ادیت مشخص کرده .

همچنین بازیابی این فایل ها (منظورم کپی کردن در مسیر برنامه از مسیری که کاربر مشخص میکنه)
این کار رو چطور میشه انجامید؟....
لطفا کد کامل بگذلرید
متشکرم

Saeed_m_Farid
دوشنبه 05 مرداد 1388, 16:25 عصر
من میخوام یه دکمه پشتبان گیری از اطلاعات بسازم که به این صورت عمل کنه.
تمام فایلهای db داخل شاخه یرنامه رو کپی کنه در مسیری که مثلا کاربر در یه ادیت مشخص کرده .

همچنین بازیابی این فایل ها (منظورم کپی کردن در مسیر برنامه از مسیری که کاربر مشخص میکنه)
این کار رو چطور میشه انجامید؟....
لطفا کد کامل بگذلرید
متشکرم
سلام
اگه فرض کنیم پوشه دیتابیس شما کنار برنامه به نام DB باشه، اول تو FormCreate؛ پوشه جاری رو تعیین می کنیم (میریزیم تو g_CurDir که یه متغیر سرسرایِ) و بعد کدش میشه مثل کد زیر (البته دو تا تابع واسه Move و Delete رو هم گذاشتم، شاید لازمتون بشه) :


unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Edit1: TEdit;
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
g_CurDir: String;

implementation

{$R *.dfm}

uses
ShellApi;

function CopyDir(const fromDir, toDir: string): Boolean;
var
fos: TSHFileOpStruct;
begin
ZeroMemory(@fos, SizeOf(fos));
with fos do
begin
wFunc := FO_COPY;
fFlags := FOF_FILESONLY;
pFrom := PChar(fromDir + #0);
pTo := PChar(toDir)
end;
Result := (0 = ShFileOperation(fos));
end;


function MoveDir(const fromDir, toDir: string): Boolean;
var
fos: TSHFileOpStruct;
begin
ZeroMemory(@fos, SizeOf(fos));
with fos do
begin
wFunc := FO_MOVE;
fFlags := FOF_FILESONLY;
pFrom := PChar(fromDir + #0);
pTo := PChar(toDir)
end;
Result := (0 = ShFileOperation(fos));
end;

function DelDir(dir: string): Boolean;
var
fos: TSHFileOpStruct;
begin
ZeroMemory(@fos, SizeOf(fos));
with fos do
begin
wFunc := FO_DELETE;
fFlags := FOF_SILENT or FOF_NOCONFIRMATION;
pFrom := PChar(dir + #0);
end;
Result := (0 = ShFileOperation(fos));
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
if not DirectoryExists(Edit1.Text) then
if not ForceDirectories(Edit1.Text) then begin
MessageDlg('Can''t create destination directory ...',
mtError,
[mbOk],
0);
Exit;
end;
CopyDir(g_CurDir+'\DB', Edit1.Text)
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
g_CurDir := GetCurrentDir;
end;

end.

اینم کل کد کامل که از یونیت کپی کردم، البته عجله ای کپی کردم و تست نکردم ...

اگه لازم به ذکر جزئیات بود بگید.
موفق باشید.