| الموضوع السابق | الموضوع التالي |
الغرض
إنشاء نسخة احتياطية لملفات قاعدة بيانات بارادوكس (Paradox Database).
الصيغة
function MakeParadoxDBBackup(SourcePath: string; var FailReason: Integer; var TargetFolder: string; AskForExtraCopy: Boolean = False): Boolean;
الوسائط (Parameters)
| SourcePath | مسار المجلد الذي يمثل قاعدة البيانات المطلوب نسخ ملفاتها. | |
| FailReason | بارامتر متغير (var) حيث سيتم تخزين رقم خطأ في حالة فشل عملية النسخ. | |
| TargetFolder | بارامتر متغير (var)، إما أن يكون نصاً فارغاً (empty string) أو أن يحتوي على مسار المجلد الهدف حيث ستحفظ النسخة الاحتياطية - انظر الشرح أدناه. | |
| AskForExtraCopy | بارامتر احتياري يحدد ما إذا كانت الدالة ستسأل المستخدم عن رغبته في إنشاء نسخة احتياطية أخرى في مجلد أو قرص آخر. |
الشرح
معروف أن قاعدة البيانات في بارادوكس هي عبارة عن مجلد يحتوي على مجموعة من ملفات الجداول (Tables) بالإضافة إلى الملفات المرافقة لها مثل ملفات الفهارس و ملفات البيانات الثنائية، ... إلخ.
تقوم هذه الدالة (MakeParadoxDBBackup) بنسخ كافة الملفات التي تحمل الامتداد (db)، و لكل ملف من تلك الملفات تقوم بنسخ كافة الملفات التي تحمل نفس الاسم بغض النظر عن الامتداد.
إذا نجحت الدالة في نسخ الملفات الموجودة بالمجلد المحدد في البارامتر SourcePath (ملف واحد على الأقل) إلى المجلد المحدد في البارامتر TargetFolder فإنها تعيد True و يتم تخزين مسار المجلد الذي تم حفظ النسخة فيه في البارامتر TargetFolder و تصبح قيمة البارامتر FailReason صفراً (BACKUP_FR_SUCCESS)، و إذا فشلت لأي سبب فإنها تعيد False و تصبح قيمة البارامتر TargetFolder نصاً فارغاً (empty string) و تصبح قيمة البارامتر FailReason غير صفرية (كما هو مبين فيما بعد).
المجلد المحدد في البارامتر SourcePath يجب أن يكون مجلداً موجوداً و إلا فإن الدالة ستعيد False.
إذا كانت قيمة البارامتر المتغير TargetFolder نصاً فارغاً فإن الدالة تعرض على المستخدم نافذة حوار لاختيار المجلد الهدف، حيث يمكنه اختيار مجلد موجود أو إنشاء مجلد جديد. أما إذا لم تكن قيمة البارامتر TargetFolder نصاً فارغاً فإن الدالة تتأكد من وجوده، و في حالة عدم وجوده فإنها تحاول إنشاءه. في حالة نجاح الدالة في نسخ الملف، سواءً إلى المجلد المحدد مسبقاً في البارامتر TargetFolder أو إلى المجلد الذي اختاره المستخدم فإن مسار المجلد الذي تم إليه النسخ يتم تخزينه في البارامتر TargetFolder (مع وجود شرطة مائلة في نهايته).
إذا كانت قيمة البارامتر AskForExtraCopy هي True فإن الدالة في حال نجحت - و فقط إذا نجحت - في نسخ الملفات من SourcePath (ملف واحد على الأقل) إلى المجلد TargetFolder فإنها تعرض على المستخدم رسالة تسأله فيها عما إذا كان يريد إنشاء نسخة احتياطية إضافية في مجلد أو قرص آخر. و سواءً اختار المستخد نعم أم لا، أو تم النسخ الإضافي أم لا فإن نتيجة الدالة و قيمة البارامتر TargetFolder لا تتغيران، لكن قيمة البارامتر FailReason قد تتغير كما هو مبين أدناه.
نتائج الدالة (الثوابت المرافقة لقيم FailReason معرفة في الوحدة DNSDGen):
| القيمة المعادة | قيمة FailReason | النتيجة |
|---|---|---|
| True | BACKUP_FR_SUCCESS (0) | تم النسخ من SourcePath إلى TargetFolder بنجاح. النسخة الإضافية لم تكن مطلوبة أو تمت بنجاح. |
| True | BACKUP_FR_SUCCESS_NO_EXTRA (7) | تم النسخ من SourcePath إلى TargetFolder بنجاح. المستخدم أجاب بنعم على رسالة النسخة الإضافية، لكن العملية لم تتم بنجاح. |
| False | BACKUP_FR_SRC_NOT_FOUND (1) | لم تتم عملية النسخ لأن المجلد المصدر غير موجود. |
| False | BACKUP_FR_USER_CANCEL (2) | لم تتم عملية النسخ لأن المستخدم اختار إلغاء الأمر عندما طُلب منه تحديد المجلد الهدف. |
| False | BACKUP_FR_TRGT_NO_ACCESS (3) | لم تتم عملية النسخ لأن المجلد الهدف غير موجود و لم تتمكن الدالة من إنشائه. |
| False | BACKUP_FR_N0_SRC_FILES (9) | لم تتم عملية النسخ لأن المجلد المصدر لا يحتوي على أية ملفات جداول (ملفات تحمل الامتداد db). |
| False | BACKUP_FR_WIN_API (10) | لم تتم عملية النسخ بسبب خطأ صادر من النظام. |
أعلى الصفحة
| الموضوع السابق | الموضوع التالي |