delphi4arab منتديات دلفي للعرب

نسخة كاملة : مشكلة في حفظ قاعدة البيانات
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
الصفحات : 1 2
السلام عليكم ورحمة الله تعالى وبركاته
صادفتني مشكلة في حفظ قاعدة اليانات من نوع absolute
كنت استعملها في نسخة الدلفي7 وكانت تعمل بشكل جيد
وعندما استعملتها في نسخة xe8
لا تتم عملية الحفظ وتظهر بانها تمت العملية لكن لا اجد الملف محفوظ
مع العلم ان مسار قاعدة البيانات هو
projrct1\mirnam\sbase\teste.abs
وهذا هو الكود المستعمل
كود :
procedure TRestoreBase.N1Click(Sender: TObject); var Pdir:string; begin RestoreBase.Caption:='حفظ المعطيات'; GroupBox1.Caption:='إختار الشهر والسنة المراد حفظهما'; Pdir:='..\..\sbase\Archives'; CreateDir(Pdir); Sleep(200); if DirectoryExists('sbase\Archives') then begin DM.OnDestroy(sender); copyfile(pchar('teste.ABS'),pchar('sbase\Archives\'+ComboBox1.Text+SpinEdit1.text),false); end else begin ForceDirectories(Pdir); end; DM.OnCreate(sender); Sleep(500); showMessage('تمت عمليةالأرشفة بنجاح'); Close; end;

وعليكم السلام ورحمة الله
جرب تغيير String بAnsiString
شيئ مثل (لم اجرب الكود)

كود :
procedure TRestoreBase.N1Click(Sender: TObject); var Pdir:AnsiString; begin RestoreBase.Caption:='حفظ المعطيات'; GroupBox1.Caption:='إختار الشهر والسنة المراد حفظهما'; Pdir:='..\..\sbase\Archives'; CreateDir(Pdir); Sleep(200); if DirectoryExists('sbase\Archives') then begin DM.OnDestroy(sender); copyfile(pChar('teste.ABS'),pChar('sbase\Archives\'+ComboBox1.Text+SpinEdit1.text),false); end else begin ForceDirectories(Pdir); end; DM.OnCreate(sender); Sleep(500); showMessage('تمت عمليةالأرشفة بنجاح'); Close; end;
السلام عليكم انه يشير الى خطأ اثناء compilie وهذا هو الخطأ
[dcc32 Erreur] U_menu.pas(49): E2010 Types incompatibles : 'PWideChar' et 'PAnsiChar'
حسنا
اعد AnsiChar الى pChar
قمت بتعديل الكود فوق
لازالت المشكلة كما كانت في الأول

هل هناك طريقة اخرى لعمل نسخة احتياطية لقاعدة البيانات في مجلد اخر
مع العلم ان قاعدة البيانات موضوعة في مجلد داخل مجلد المشروع
للتوضيح :
المجلد الأول اسمه mirnam
وبداخله مجلد المشروع وإسمه project1
ويوجد بداخل مجلد المشروع مجلد اخر المتواجد به قاعدة البيانات واسمه sbase
كما يوجد بايضا داخل مجلد المشروع مجلد اخر والمراد بحفظ النسخة الإختياطية لقاعدة البيانات واسمه Archives
اما بالنسبة لقاعدة البيانات teste.abs ستحمل اسم اخر ناتج عن المكون Combobox1 و المكون spinedit1 اثناء عملية النسخ وتخزن في المجلد Archives
السلام عليكم, أخ medreg, لم توضح جيدًا المسار الذي تعمل معه.
 لم في المرة الأولى
PHP كود :
Pdir:='..\..\sbase\Archives'; 
ثم في الشرط لم تستخدم المتغير pdir, وقارنت بـ:
PHP كود :
'sbase\Archives' 

هل كنت تقصد ب ..\..\, أن تخرج من المجلد win32\debug؟؟
هكذا لن يتحقق الشرط, لأنه دائما يقوم بانشاء المجلد بالرجوع مجلدين للخلف.


أيضًا, CreateDir, لا يمكنها إنشاء أكثر من مجلد, إستعمل ForceDirectories.

جرب هكذا.

كود :
procedure TRestoreBase.N1Click(Sender: TObject); var     Pdir:string;     backupDBname: string; begin     Pdir:='..\..\sbase\Archives\'; //أو 'sbase\Archives\'     backupDBname := ComboBox1.Text + SpinEdit1.text;          RestoreBase.Caption:='حفظ المعطيات';     GroupBox1.Caption:='إختار الشهر والسنة المراد حفظهما';     Sleep(200);          ForceDirectories(Pdir);          if DirectoryExists(Pdir) then     begin         DM.OnDestroy(sender);         if copyfile(pchar('teste.ABS'),pchar(Pdir + backupDBname), false) then         begin             Sleep(500);             ShowMessage('تمت عمليةالأرشفة بنجاح');         end;         DM.OnCreate(sender);     end;     Close; end;

السلام عليكم
افهم مما سبق ان قاعدة البيانات
\mirnam\sbase\teste.abs
المشروع
\mirnam\project1.exe
النسخ الاحتياطية تكون في
\mirnam\sbase\archives
هل هذا صحيح ؟
(18-02-2019, 10:34 AM)B.M.AbdelAziZ كتب : [ -> ]
السلام عليكم
افهم مما سبق ان قاعدة البيانات
\mirnam\sbase\teste.abs
المشروع
\mirnam\project1.exe
النسخ الاحتياطية تكون في
\mirnam\sbase\archives
هل هذا صحيح ؟

بل قاعدة البيانات تكون في
Mirnam\Project1\sbase\teste.abs\
المشروع
Mirnam\Project1\project1.exe
النسخ الإحتياطية تكون في
Mirnam\Project1\sbase\archives\
جزاكم الله عنا كل خير
كود :
procedure TRestoreBase.N1Click(Sender: TObject); var sPath,Pdir:string; begin RestoreBase.Caption:='حفظ المعطيات'; GroupBox1.Caption:='إختار الشهر والسنة المراد حفظهما'; sPath:=ExtractFilePath(ParamStr(0)); Pdir:=sPath+'sbase\Archives'; CreateDir(Pdir); Sleep(200); if DirectoryExists(Pdir) then begin DM.OnDestroy(sender); copyfile(pchar(sPath+'teste.ABS'),pchar(Pdir+'\'+ComboBox1.Text+SpinEdit1.text),false); end else begin ForceDirectories(Pdir); end; DM.OnCreate(sender); Sleep(500); showMessage('تمت عمليةالأرشفة بنجاح'); Close; end;
(19-02-2019, 08:26 AM)B.M.AbdelAziZ كتب : [ -> ]
كود :
procedure TRestoreBase.N1Click(Sender: TObject); var sPath,Pdir:string; begin RestoreBase.Caption:='حفظ المعطيات'; GroupBox1.Caption:='إختار الشهر والسنة المراد حفظهما'; sPath:=ExtractFilePath(ParamStr(0)); Pdir:=sPath+'sbase\Archives'; CreateDir(Pdir); Sleep(200); if DirectoryExists(Pdir) then begin DM.OnDestroy(sender); copyfile(pchar(sPath+'teste.ABS'),pchar(Pdir+'\'+ComboBox1.Text+SpinEdit1.text),false); end else begin ForceDirectories(Pdir); end; DM.OnCreate(sender); Sleep(500); showMessage('تمت عمليةالأرشفة بنجاح'); Close; end; لازالت المشكلة قائمة بالنسبة لإنشاء المجلد المسمى archives العملية تمام لكن لا يوجد بداخله اي شيئ يعني قاعدة البيانات لم يتم حفظها
الصفحات : 1 2