ما هو الخطأ في هذه الملفات
#1
بسم الله الرحمن الرحيم
الصلاة والسلام عل رسول الله وعلى آله وصحبه أجمعين

ما هو الخطأ في هذه الملفات

أردت من هذا المثال أن أعمل برنامج يعمل على عدة اصدارات من دلفي مثلا
Delphi7 and Delphi 10.2

جعلت كل العناصر التي تتعامل مع ملفات قاعدة البيالنات في ملف دي ال ال
DLL
بدلفي 7
وجعلت البرنامج الذي يستدعي دي ال ال بدلفي 10.2

الاخطاء
عندما تضغط فوق الزر Afficher مرتين أو أكثر تظهر رسالة خطأ
اذا أدخلت معلومات الى قاعدة البيانات من دلفي 10.2 تظهر برموز غريبة


مشروع ملف دي ال ال بدلفي7
dll delphi 7 borland.rar
https://www.mediafire.com/file/m6mihm6xx...orland.rar

الملف التنفيذي بدلفي7 وملفات قاعدة البيانات
executable et base de donnee delphi7 b.rar
https://www.mediafire.com/file/qo1grmnhe...i7%20b.rar

الملف التنفيذي بدلفي10.2 وملفات قاعدة البيانات
executable et base de donnee delphi 10.2.rar
https://www.mediafire.com/file/a8tvgkaj3...2010.2.rar

بعض الاخطاء التي تظهر
Image.rar
https://www.mediafire.com/file/vq2i8885c.../Image.rar

المشروع بدلفي7
projet delphi 7 borland.rar
https://www.mediafire.com/file/iqe9hq6ii...orland.rar

المشروع بدلفي10.2
projet delphi 10.2.rar
https://www.mediafire.com/file/88m9p5l7a...2010.2.rar

ملف دي ال ال الكود

كود :
unit untDataModule; interface uses  SysUtils, Classes, DB, DBTables, Dialogs,Controls; type  TDataModule1 = class(TDataModule)  private  public  end;  procedure db100(cd,nm,pnm: string);  stdcall;  procedure dbOut100(sear: string; var cd,nm,pnm: string);  stdcall;  function dbPassword(sear: string): boolean;  stdcall;  procedure Add_dbPassword(Mot_de: string);  stdcall;  procedure dbDEL100(sear: string);  stdcall;                     type  arryee= array of string; //ansistring  widestring procedure dbTable100(var cont: integer; var arrya, arrya1,arrya2: arryee); stdcall; var  DataModule1: TDataModule1; // arry: array of arryee; implementation {$R *.dfm} procedure db100(cd,nm,pnm: string); stdcall; var ffm: tTable; begin   ffm := tTable.Create(nil);   try    ffm.Close;    ffm.TableName := 'person1.db';    ffm.Open;    ffm.Last;    ffm.Append;    ffm.FieldByName('Code').AsString := cd;    ffm.FieldByName('Nom').AsString := nm;    ffm.FieldByName('Porenom').AsString := pnm;    ffm.Post;   finally    ffm.Free;   end; end; procedure dbTable100(var cont: integer; var arrya, arrya1,arrya2: arryee); stdcall; var   tab10: TTable;   i: integer; begin   i := 0;   tab10 := TTable.Create(nil);   try    tab10.Close;    tab10.TableName := 'person1.db';    tab10.Open;    cont := tab10.RecordCount;    SetLength(arrya,cont);    SetLength(arrya1,cont);    SetLength(arrya2,cont);    tab10.DisableControls;    try    tab10.First;    while not tab10.Eof do    begin      arrya[i] := tab10.FieldByName('Code').AsString;      arrya1[i] := tab10.FieldByName('Nom').AsString;      arrya2[i] := tab10.FieldByName('Porenom').AsString;      tab10.Next;      i := i + 1;    end;    finally      tab10.EnableControls;    end;   finally      tab10.Free;   end; end; function dbPassword(sear: string): boolean;  stdcall; var tblPass: tTable; begin   tblPass := tTable.Create(nil);   try    tblPass.Close;    tblPass.TableName := 'motdepass.db';    tblPass.Open;    if tblPass.Locate('Mot',sear,[]) then Result := true      else Result := false;   finally    tblPass.Free;   end; end; procedure Add_dbPassword(Mot_de: string);  stdcall; var tblPass: tTable; begin   tblPass := tTable.Create(nil);   try    tblPass.Close;    tblPass.TableName := 'motdepass.db';    tblPass.Open;    tblPass.First;    if tblPass.RecordCount>0 then tblPass.Append      else tblPass.Edit;    tblPass.FieldByName('Mot').AsString := Mot_de;    tblPass.Post;   finally    tblPass.Free;   end; end; procedure dbOut100(sear: string; var cd,nm,pnm: string);  stdcall; var tblOut: tTable; begin   tblOut := tTable.Create(nil);   try    tblOut.Close;    tblOut.TableName := 'person1.db';    tblOut.Open;    tblOut.Locate('Nom',sear,[]);    cd := tblOut.FieldByName('Code').AsString;    nm := tblOut.FieldByName('Nom').AsString;    pnm := tblOut.FieldByName('Porenom').AsString;   finally    tblOut.Free;   end; end; procedure dbDEL100(sear: string);  stdcall; var tblDEL: tTable; s1: string;   begin   tblDEL := tTable.Create(nil);   try    tblDEL.Close;    tblDEL.TableName := 'person1.db';    tblDEL.Open;    tblDEL.Locate('Nom',sear,[]);    s1 := tblDEL.FieldByName('Nom').AsString;    if MessageDlg('هل تريد حذف هذا الاسم '+    s1+' ?',mtWarning,[mbYes, mbNo],0)     = mrYes then tblDEL.Delete;   finally    tblDEL.Free;   end; end; exports db100 name 'dbin', dbOut100 name 'dbout',      dbTable100 name 'dbTab', dbPassword name 'Passwords',        Add_dbPassword name 'Add_dbPasswords', dbDEL100 name 'DEL100'; end
.

البرنامج بدلفي 10.2  الكود:

كود :
unit Unit3; interface uses  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.Grids, Vcl.StdCtrls; type  TForm3 = class(TForm)    Memo1: TMemo;    Button5: TButton;    GroupBox1: TGroupBox;    Label1: TLabel;    Label2: TLabel;    Label3: TLabel;    Button2: TButton;    Edit3: TEdit;    Edit2: TEdit;    Edit1: TEdit;    GroupBox2: TGroupBox;    Edit4: TEdit;    Button3: TButton;    Button1: TButton;    GroupBox3: TGroupBox;    Edit5: TEdit;    Button4: TButton;    StringGrid1: TStringGrid;    GroupBox4: TGroupBox;    Edit6: TEdit;    Button6: TButton;    procedure Button5Click(Sender: TObject);    procedure Button2Click(Sender: TObject);    procedure Button3Click(Sender: TObject);    procedure Button4Click(Sender: TObject);    procedure Button6Click(Sender: TObject);    procedure Button1Click(Sender: TObject);    procedure FormClose(Sender: TObject; var Action: TCloseAction);  private  public  end;  procedure db100(cd,nm,pnm: string);  stdcall;  external 'ProjectDLL.dll' name 'dbin';  procedure dbOut100(sear: string; var cd,nm,pnm: widestring);  stdcall;  external 'ProjectDLL.dll' name 'dbout';  procedure Add_dbPassword(Mot_de: string);  stdcall;  external 'ProjectDLL.dll' name 'Add_dbPasswords';  procedure dbDEL100(sear: string);  stdcall;  external 'ProjectDLL.dll' name 'DEL100'; //; var s1,s2,s3: widestring type  arryee1= array of widestring; //ansistring procedure dbTable100(var cont: integer; var arrya, arrya1,arrya2: arryee1);  stdcall;  external 'ProjectDLL.dll' name 'dbTab'; var  Form3: TForm3; implementation {$R *.dfm} procedure TForm3.Button2Click(Sender: TObject); begin  db100(Edit1.Text,Edit2.Text,Edit3.Text);  Edit1.Text:='';  Edit2.Text:='';  Edit3.Text:='';  Edit1.SetFocus; end; procedure TForm3.Button3Click(Sender: TObject); var  a,b,c: widestring ;  //            ansistring begin  dbOut100(Edit4.Text,a,b,c);  Edit1.Text:=a;  Edit2.Text:=b;  Edit3.Text:=c; end; procedure TForm3.Button4Click(Sender: TObject); begin Add_dbPassword(Edit5.Text); end; procedure TForm3.Button5Click(Sender: TObject); var  arrya00, arrya11,arrya22: arryee1;  cont12: integer;  i1: integer; begin StringGrid1.Cells[1,0] := 'الرقم'; StringGrid1.Cells[2,0] := 'الاسم'; StringGrid1.Cells[3,0] := 'اللفب'; Memo1.Lines.Clear; // if iii = 0 then dbTable100(cont12,arrya00, arrya11,arrya22); for i1 := 0 to 10 do begin  if i1 < cont12 then  begin   Memo1.Lines.Add(arrya00[i1]+'   '+arrya11[i1]+'  '+arrya22[i1]);   StringGrid1.RowCount := cont12+1;   StringGrid1.Cells[1,i1+1] := arrya00[i1];   StringGrid1.Cells[2,i1+1] := arrya11[i1];   StringGrid1.Cells[3,i1+1] := arrya22[i1];  end; end; end; procedure TForm3.Button6Click(Sender: TObject); begin  dbDEL100(Edit6.Text); end; end.
الرد


الردود في هذا الموضوع
ما هو الخطأ في هذه الملفات - بواسطة sabre - 11-11-2017, 02:44 PM
RE: ما هو الخطأ في هذه الملفات - بواسطة sabre - 22-11-2017, 06:03 PM

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم