![]() |
|
ما هو الخطأ في هذه الملفات - نسخة قابلة للطباعة +- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum) +-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3) +--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15) +--- الموضوع : ما هو الخطأ في هذه الملفات (/showthread.php?tid=9002) |
ما هو الخطأ في هذه الملفات - sabre - 11-11-2017 بسم الله الرحمن الرحيم الصلاة والسلام عل رسول الله وعلى آله وصحبه أجمعين ما هو الخطأ في هذه الملفات أردت من هذا المثال أن أعمل برنامج يعمل على عدة اصدارات من دلفي مثلا Delphi7 and Delphi 10.2 جعلت كل العناصر التي تتعامل مع ملفات قاعدة البيالنات في ملف دي ال ال DLL بدلفي 7 وجعلت البرنامج الذي يستدعي دي ال ال بدلفي 10.2 الاخطاء عندما تضغط فوق الزر Afficher مرتين أو أكثر تظهر رسالة خطأ اذا أدخلت معلومات الى قاعدة البيانات من دلفي 10.2 تظهر برموز غريبة مشروع ملف دي ال ال بدلفي7 dll delphi 7 borland.rar https://www.mediafire.com/file/m6mihm6xx12pnss/dll%20delphi%207%20borland.rar الملف التنفيذي بدلفي7 وملفات قاعدة البيانات executable et base de donnee delphi7 b.rar https://www.mediafire.com/file/qo1grmnhe1mnceo/executable%20et%20base%20de%20donnee%20delphi7%20b.rar الملف التنفيذي بدلفي10.2 وملفات قاعدة البيانات executable et base de donnee delphi 10.2.rar https://www.mediafire.com/file/a8tvgkaj3wnhv8s/executable%20et%20base%20de%20donnee%20delphi%2010.2.rar بعض الاخطاء التي تظهر Image.rar https://www.mediafire.com/file/vq2i8885cklkzbg/Image.rar المشروع بدلفي7 projet delphi 7 borland.rar https://www.mediafire.com/file/iqe9hq6iiiheavo/projet%20delphi%207%20borland.rar المشروع بدلفي10.2 projet delphi 10.2.rar https://www.mediafire.com/file/88m9p5l7aml2v7o/projet%20delphi%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.RE: ما هو الخطأ في هذه الملفات - محمد عبد العزيز - 19-11-2017 وعليكم السلام ورحمة الله وبركاته لم اطلع على الملفات لكن يبدو انك لم تفهم جيدا ما قلته لك اخر مرة: دلفي 7 وكل اصدارات دلفي ماقبل دلفي2009 تتعامل مع String كAnsiString اما دلفي2009 وما فوق تتعامل مع String كWideString http://delphi4arab.net/forum/showthread.php?tid=8855 RE: ما هو الخطأ في هذه الملفات - sabre - 22-11-2017 السلام عليكم ورحمة الله وبركاته نجحت هذه الفكرة مع القيمة النصية المرسلة الى ملف دي ال ال ولم تنجح مع القيمة النصية التي تجلب من ملف دي ال ال اقصد القيمة النصية التي تاتي من ماف دي ال ال وخصوصا اذا تكررت عملية جلب من ملف دي ال ال تحدث اخطأ تتعلق بالذاكرة استعملت String و AnsiString و WideString ولم انجح في جلب من ملف دي ال ال وفي اختلاف الاصدارات مثلا Delphi7 و Delphi 10.2 |