دلفي تعليم
مرحبا بكم ايها الزئر أو الزائرة الكريمين

برمجة قاموس انجليزي عربي ناطق بالدلفي

استعرض الموضوع السابق استعرض الموضوع التالي اذهب الى الأسفل

برمجة قاموس انجليزي عربي ناطق بالدلفي

مُساهمة  mah11 في 21/6/2013, 6:41 pm



برمجة قاموس انجليزي عربي ناطق بالدلفي

بسم الله الرحمن الرحيم
وصلاة والسلام على أشرف المرسلين سيدنا محمد صلى الله عليه وسلم وعلى آله وصحبه أجمعين
الحمد لله نحمده ونستغفره
اللهم اهدنا

هذه تجربة متواضعة

كيفية برمجة قاموس انجليزي عربي ناطق بالدلفي خمسة

ملاحظة :
طريقة تصميم النموذج الاول والثاني تركتها لك
كل واحد حسب ذوقه

------------------------------
// الوحدة الاولى
------------------------------

الكود:

unit Unit1; // delph.forumalgerie.net

// الواجهة الوحدة
interface

{ قسم التصريحات ويضم هذا القسم
كل الوحدات والعناصر والاجراءات والدوال والمتغييرات وثوابت
}
// استدعاء الوحدات
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Buttons; // delph.forumalgerie.net

//
type
//
TForm1 = class(TForm) // delph.forumalgerie.net
// ضع على النموذج مربع نص 2
Edit1: TEdit; // delph.forumalgerie.net
Edit2: TEdit;
// ضع على النموذج 4 ازرار
BitBtn1: TBitBtn; // delph.forumalgerie.net
BitBtn2: TBitBtn; // delph.forumalgerie.net
BitBtn3: TBitBtn; // delph.forumalgerie.net
Button2: TButton; // delph.forumalgerie.net
// ضع على النموذج مربع نص ذو قائمة 1
ComboBox1: TComboBox; // delph.forumalgerie.net
// الاجراءات المستعملة
procedure BitBtn1Click(Sender: TObject); // delph.forumalgerie.net
procedure Button2Click(Sender: TObject); // delph.forumalgerie.net
procedure ComboBox1Change(Sender: TObject); // delph.forumalgerie.net
procedure FormCreate(Sender: TObject); // delph.forumalgerie.net
procedure Edit1Change(Sender: TObject); // delph.forumalgerie.net
procedure BitBtn2Click(Sender: TObject); // delph.forumalgerie.net
procedure Edit1Enter(Sender: TObject); // delph.forumalgerie.net
procedure BitBtn3Click(Sender: TObject); // delph.forumalgerie.net
private
public
end; // delph.forumalgerie.net

// تصريح بالمتغييرات
var
Form1: TForm1; // delph.forumalgerie.net

implementation

// استدعاء وحدتين
uses Unit2, Comobj; // delph.forumalgerie.net

{$R *.DFM} // delph.forumalgerie.net

// الاجراء
procedure TForm1.BitBtn1Click(Sender: TObject); // delph.forumalgerie.net
// تصريح بتسجيلة
type na = record
// المتغيير الاول في التسجيلةوالحد الاقصى لهذا المتغيير هو 40 حرف او رقم
// وهو من نوع السلاسل الحرفية
NomEn : string[40]; // delph.forumalgerie.net
// المتغيير الثاني
NomAr : string[40]; // delph.forumalgerie.net
// انهاء التسجيلة
end; // delph.forumalgerie.net

// تصريح بالمتغييرات
var
// متغيير من نوع تسجيلة
na1: na;
// متغيير من نوع ملف والملف من نوع تسجيلة
fich1: File of na; // delph.forumalgerie.net
// متغيير منطقي
boo1: boolean; // delph.forumalgerie.net
// بداية
begin
// اسناد القيمة خطأ للمتغيير
boo1 := false; // delph.forumalgerie.net
// فتح الملف المحدد من اجل القراءة او الكتابة
AssignFile(fich1, 'EnAr24.dat');
// فتح الملف بدون مسح محتواه
reset(fich1); // delph.forumalgerie.net
// حلقة تكرارية من بداية الملف الى نهاية الملف
while not eof(fich1) do
// بداية الحلقة
begin
// قراءة من الملف المفتوح
read(fich1, na1); // delph.forumalgerie.net
// الشرط
// إذا كان محتوى مربع النص يساوي الكلمة الانجليزية في القاموس
// سيتم الدخول الى الشرط
// أي
// في حالة تساوي القيمتين
if Edit1.Text = na1.NomEn then
// بداية الشرط
begin
// سيتم وضع الكلمة الانجليزية في مربع النص ذو القائمة
ComboBox1.Text := na1.NomEn; // delph.forumalgerie.net
// سيتم اضافة الكلمة الانجليزية الى قائمة مربع النص ذو القائمة المنسدلة
ComboBox1.Items.Add(ComboBox1.Text); // delph.forumalgerie.net
// سيتم وضع الكلمة العربية الى مربع النص
Edit2.Text := na1.NomAr; // delph.forumalgerie.net
// اسناد القيمة صح الى المتغيير المنطقي
boo1 := true; // delph.forumalgerie.net
// نهاية الشرط
end; // delph.forumalgerie.net
// نهاية الحلقة
end; // delph.forumalgerie.net
// إغلاق الملف المفتوح
CloseFile(fich1); // delph.forumalgerie.net
// اذا كانت قيمة المتغيير المنطقي خطأ
// فانه سيتم اظهار رسالة
// أي أن الكلمة غير موجودة في القاموس
if not boo1 then ShowMessage
(
'
هذه الكلمة غير موجودة'
)
; // delph.forumalgerie.net
// عدم تفعيل زر البحث
BitBtn1.Enabled := false; // delph.forumalgerie.net
// مسح مربع النص
Edit1.Text := ''; // delph.forumalgerie.net
// نهاية الاجراء
end; // delph.forumalgerie.net

procedure TForm1.Button2Click(Sender: TObject); // delph.forumalgerie.net
begin
// اظهار النموذج الثاني
Form2.show; // delph.forumalgerie.net
end; // delph.forumalgerie.net

procedure TForm1.ComboBox1Change(Sender: TObject); // delph.forumalgerie.net
begin
// اسناد القيمة الظاهرة لمربع النص ذو القائمة المنسدلة
// الى مربع النص

Edit1.Text := ComboBox1.Text; // delph.forumalgerie.net
end; // delph.forumalgerie.net

// اجراء انشاء نموذج
procedure TForm1.FormCreate(Sender: TObject); // delph.forumalgerie.net
// بداية
begin
// من اليمين الى اليسار أي الجهة العربية
Form1.BiDiMode := bdRightToLeft; // delph.forumalgerie.net
// الخط عربي
Form1.Font.Charset := ARABIC_CHARSET; // delph.forumalgerie.net

// عدم تفعيل زر البجث
BitBtn1.Enabled := false; // delph.forumalgerie.net
// عنوان زر البحث
BitBtn1.Caption
:
=
'
معنى الكلمة'
;
// عنوان زر النطق
BitBtn2.Caption
:
=
'
نطق
'
; // delph.forumalgerie.net
// عنوان زر الاغلاق
BitBtn3.Caption
:
=
'
اغلاق
'
;
// عنوان زر فتح النموذج الثاني
Button2.Caption
:
=
'
نموذج 2
'
; // delph.forumalgerie.net
// توسيط نموذج داخل الشاشة
Form1.Position := poScreenCenter; // delph.forumalgerie.net
// عنوان النموذج الاول
Form1.Caption
:
=
'
اسم القاموس
'
; // delph.forumalgerie.net
// مربع نص ذو قائمة
// مسح
ComboBox1.Text := ''; // delph.forumalgerie.net
// مسح مربع النص الاول
Edit1.Text := ''; // delph.forumalgerie.net
// مسح مربع النص الثاني 
Edit2.Text := ''; // delph.forumalgerie.net

// نهاية
end; // delph.forumalgerie.net

procedure TForm1.Edit1Change(Sender: TObject); // delph.forumalgerie.net
begin
// الشرط
if Edit1.Text <> '' then
// زر البحث ممكن أو نشط
BitBtn1.Enabled := true
// زر البحث غير ممكن
else BitBtn1.Enabled := false; // delph.forumalgerie.net
end; // delph.forumalgerie.net

procedure TForm1.BitBtn2Click(Sender: TObject); // delph.forumalgerie.net
// تصريح بالمتغيير
var
calam: OLEVariant;  // delph.forumalgerie.net
// نوع المتغيير
begin
// اسناد قيمة دالة الانشاء الى المتغيير
calam := CreateOLEObject('SAPI.SpVoice'); // delph.forumalgerie.net
// نطق الكلمة المحدد في مربع النص ذو القائمة
calam.Speak(ComboBox1.Text, 0); // delph.forumalgerie.net
end; // delph.forumalgerie.net

procedure TForm1.Edit1Enter(Sender: TObject); // delph.forumalgerie.net
begin
// دخول الى العنصر
// كتابة باللغة الانجليزية
LoadKeyBoardLayout('00000409',Klf_Activate);// english
end;

procedure TForm1.BitBtn3Click(Sender: TObject); // delph.forumalgerie.net
begin
// أوامر الاغلاق
Close; // delph.forumalgerie.net
// Halt;
[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط]
end; // delph.forumalgerie.net

// نهاية الوحدة
end. // delph.forumalgerie.net

-------------------------------------------------
-
-------------------------------------------------
/////////////////////////////////////////////////
// //
// //
// //
/////////////////////////////////////////////////
// الوحدة الثانية
الكود:

unit Unit2; // delph.forumalgerie.net

// الواجهة
interface

// استدعاء الوحدات
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Buttons; // delph.forumalgerie.net

// النوع
type
TForm2 = class(TForm) // delph.forumalgerie.net
// ضع هذه العنلصر على النموذج
// مربع نص أو تحرير ذو سطرواحد
Edit1: TEdit; // delph.forumalgerie.net
Edit2: TEdit; // delph.forumalgerie.net
// ازرار
BitBtn1: TBitBtn; // delph.forumalgerie.net
BitBtn2: TBitBtn; // delph.forumalgerie.net
BitBtn3: TBitBtn; // delph.forumalgerie.net
// لافتة من أجل العناوين
Label1: TLabel; // delph.forumalgerie.net
Label2: TLabel; // delph.forumalgerie.net
// مربع نص متعدد السطور
Memo1: TMemo; // delph.forumalgerie.net
// ازرار
BitBtn4: TBitBtn; // delph.forumalgerie.net
BitBtn5: TBitBtn; // delph.forumalgerie.net
procedure BitBtn1Click(Sender: TObject); // delph.forumalgerie.net
procedure BitBtn2Click(Sender: TObject); // delph.forumalgerie.net
procedure BitBtn3Click(Sender: TObject); // delph.forumalgerie.net
procedure FormCreate(Sender: TObject); // delph.forumalgerie.net
procedure BitBtn5Click(Sender: TObject); // delph.forumalgerie.net
procedure Edit2Enter(Sender: TObject); // delph.forumalgerie.net
procedure Edit1Enter(Sender: TObject); // delph.forumalgerie.net
procedure FormClose(Sender: TObject; var Action: TCloseAction); // delph.forumalgerie.net
private
public
end; // delph.forumalgerie.net

// بداية التسجيلة
type na = record
// العنصر أو المتغيير الاول
NomEn : string[40]; // delph.forumalgerie.net
// العنصر أو المتغيير الثاني
NomAr : string[40]; // delph.forumalgerie.net
// نهاية التسجيلة
end; // delph.forumalgerie.net

// تصريح بالمتغييرات العامة
var
// نوع النموذج
Form2: TForm2; // delph.forumalgerie.net
// نوع الملف وهو من نوع تسجيلة
fich1: File of na; // delph.forumalgerie.net
// متغيير من نوع تسجيلة
na1: na; // delph.forumalgerie.net
// متغيير من نوع صحيح
i: integer; // delph.forumalgerie.net
// متغيير من نوع منطقي
folle1: boolean;  // delph.forumalgerie.net

implementation

{$R *.DFM} // delph.forumalgerie.net

// بداية الاجراء
procedure TForm2.BitBtn1Click(Sender: TObject); // delph.forumalgerie.net
// تصريح بمتغيير منطقي
var boo0: boolean; // delph.forumalgerie.net
begin
// اسناد القيمة صح
folle1 := true; // delph.forumalgerie.net
// اسناد أو اعطاء القيمة الى المتغيير إي
i := 0;
// هذه الدالة تبحث عن الملف ان كان موجود أم لا
// اذا كان موجود يأخذ المتغيير المنطقي القيمة صح
if FileExists('EnAr24.dat') then boo0 := true
// واذا لم يكن موجود يلأخذ القيمة خطأ أ صفر
else boo0 := false;
// انشاء الملف اذا لم يكن موجود
AssignFile(fich1, 'EnAr24.dat'); // open file
// هذا الشرط من أجل عدم وجود أو وجود الملف
// اذا لم يكن موجود سيتم انشاءه من جديد
if not boo0 then ReWrite(fich1) // delph.forumalgerie.net
// اذا كان موجود سيتم فتحه
else Reset(fich1); // delph.forumalgerie.net
// هذه الدالة من أجل تركيز مؤشر الكتابةفي بدايةالملف
seek(fich1, 0); // delph.forumalgerie.net
// بداية الحلقة
// تبدأ هذه الحلقة من صفر الى نهاية الملف
while not eof(fich1) do // delph.forumalgerie.net
// بداية
begin
// قراءة الملف من البداية الى النهاية
read(fich1, na1); // delph.forumalgerie.net
// متغيير متزائد
// زيادة بواحد في كل مرة
i := i + 1; // delph.forumalgerie.net
// نهاية
end; // delph.forumalgerie.net
// تركيز مؤشر الكتابة في نهاية الملف
//
seek(fich1, i); // delph.forumalgerie.net
// تمكين مربع التحريرالاول
Edit1.Enabled := true; // word english
// تمكين مربع التحرير الثاني
Edit2.Enabled := true; // word arabic
// عدم تمكين زر الفتح
BitBtn1.Enabled := false;// Button1 open file
// تمكين أو تفعيل زر الكتابة
BitBtn2.Enabled := true;// Button2 write in file
// عدم تفعيل زر العرض
BitBtn5.Enabled := false; // Button5 show text
// نهاية الاجراء
end; // delph.forumalgerie.net

// بداية الاجراء
procedure TForm2.BitBtn2Click(Sender: TObject); // delph.forumalgerie.net
// تصريح بمتغيير من نوع صحيح
var n1: integer; // delph.forumalgerie.net
// بداية
begin // write in file
// اسناد محتوى مربع التحرير الاول الى العنصر الاول في التسجيلة
na1.NomEn := Edit1.Text; // word english
// اسناد محتوى مربع التحرير الثاني الى العنصر الثاني في التسجيلة
na1.NomAr := Edit2.Text; // word arabic
// كتابة عناصر التسجيلة في الملف
Write(fich1, na1); // delph.forumalgerie.net
// مسح مربع التحرير الاول
Edit1.Text := ''; // word english
// مسح مربع التحرير الثاني
Edit2.Text := ''; // word arabic
// تمكين زر الاغلاق
BitBtn3.Enabled := true; // Button3 Close file
// اسناد أو اعطاء قيمة المتغير إي الى آن واحد
n1 := i; // delph.forumalgerie.net
// هذه الدالة من أجل تركيز مؤشر الكتابةفي بدايةالمل
seek(fich1, 0); // delph.forumalgerie.net
// مسح مربع التحرير متعدد السطور
Memo1.Lines.Clear; // delph.forumalgerie.net
// بداية الحلقة
// تبدأ هذه الحلقة من صفر الى نهاية الملف
while not eof(fich1) do
// بداية
begin
// قراءة الملف من البداية الى النهاية
read(fich1, na1); // delph.forumalgerie.net
// عرض محتوى الملف في مربع التحرير المتعدد السطور
Memo1.Lines.Add(na1.NomEn+' = '+na1.NomAr); // delph.forumalgerie.net
// نهاية
end; // delph.forumalgerie.net
// ارجاع القيمة الاصلية الى المتغيير
i := n1;
// نهاية الاجراء
end; // delph.forumalgerie.net

// بداية الاجراء
procedure TForm2.BitBtn3Click(Sender: TObject); // delph.forumalgerie.net
begin
// Close file
// اغلاق الملف نهائيا
CloseFile(fich1);  // delph.forumalgerie.net
// اسناد القيمة خطأ
folle1 := false; // delph.forumalgerie.net
// عدم تفعيل مربع التحريرللاول
Edit1.Enabled := false; // word english
// عدم تمكين مربع التحرير الثاني
Edit2.Enabled := false; // word arabic
// تفعيل زر الفتح
BitBtn1.Enabled := true; // Button1 open file
// عدم تفعيل زر الكتابة
BitBtn2.Enabled := false; // Button2 write in file
// عدم تمكين زر الاغلاق
BitBtn3.Enabled := false // Button3 Close file
// نهاية الاجراء
end; // delph.forumalgerie.net

// بداية الاجراء
// وهو اجراء انشاء النموذج
procedure TForm2.FormCreate(Sender: TObject); // delph.forumalgerie.net
// بداية
begin
// من اليمين الى اليسار أي الجهة العرب
Form2.BiDiMode := bdRightToLeft; // delph.forumalgerie.net
// الخط عربي
Form2.Font.Charset := ARABIC_CHARSET; // delph.forumalgerie.net
//
Form2.Caption
:
=
'
كتابة الكلمات العربية والانجليزية في القاموس
'
;
Label1.Caption
:
=
'
اكتب كلمة الانجليزية
'
;
Label2.Caption
:
=
'
اكتب كلمة بالعربية
'
;
BitBtn1.Caption
:
=
'
فتح الملف
'
;
BitBtn2.Caption
:
=
'
الكتابة في الملف
'
;
BitBtn3.Caption
:
=
'
اغلاق الملف
'
;
BitBtn4.Caption
:
=
'
عودة
'
;
BitBtn5.Caption
:
=
'
عرض محتوى الملف
'
;
// اسناد القيمة خطأ
folle1 := false; // delph.forumalgerie.net
// توسيط النموذج في الشاشة
Form2.Position := poScreenCenter; // delph.forumalgerie.net
// مسح مربع التحرير الاول
Edit1.Text := ''; // word english
// مسح مربع التحرير الثاني
Edit2.Text := ''; // word arabic
// مسح مربع التحرير متعدد السطور
Memo1.Lines.Clear; // delph.forumalgerie.net
// عدم تفعيل مربع التحرير الاول
Edit1.Enabled := false; // word english
// عدم تفعيل مربع التحرير الثاني
Edit2.Enabled := false; // word arabic
// تفعيل زر الفتح
BitBtn1.Enabled := true; // Button1 open file
// عدم تفعيل زر الطتابة
BitBtn2.Enabled := false; // Button2 write in file
// عدم تفعيل زر الاغلاق
BitBtn3.Enabled := false // Button3 Close file
// نهاية الاجرا
end; // delph.forumalgerie.net

// بداية الاجراء
procedure TForm2.BitBtn5Click(Sender: TObject); // delph.forumalgerie.net
begin
// مسح مربع التحرير متعدد السطور
Memo1.Lines.Clear; // delph.forumalgerie.net
// انشاء الملف اذا لم يكن موجوأو فتحه اذا كان موجود
AssignFile(fich1, 'EnAr24.dat'); // open file
// اذا كان موجود سيتم فتحه
Reset(fich1); // delph.forumalgerie.net
// بداية الحلقة
// تبدأ هذه الحلقة من صفر الى نهاية الملف
while not eof(fich1) do
// بداية
begin
// قراءة الملف من البداية الى النهاية
read(fich1, na1); // delph.forumalgerie.net
// عرض محتوى الملف في الميمو 1
Memo1.Lines.Add(na1.NomEn+' = '+na1.NomAr); // delph.forumalgerie.net
// نهاية الحلقة
end; // delph.forumalgerie.net

// اغلاق الملف المفتوح
CloseFile(fich1); // delph.forumalgerie.net
// عدم تفعيل زر العرض
BitBtn5.Enabled := false; // Button5 show text
// نهاية الاجراء
end; // delph.forumalgerie.net

procedure TForm2.Edit2Enter(Sender: TObject); // delph.forumalgerie.net
begin
// هذه الدالة تجعل مؤشر الكتابة ينتقل الى اللغة العربية
LoadKeyBoardLayout('00000401',Klf_Activate); // Arabic
// أي
// اللغة العربية السعودية
// نهاية الاجراء
end; // delph.forumalgerie.net

// الاجراء
procedure TForm2.Edit1Enter(Sender: TObject); // delph.forumalgerie.net
begin
// هذه الدالة تجعل مؤشر الكتابة ينتقل الى اللغة الانجليزية
LoadKeyBoardLayout('00000409',Klf_Activate);// english
// أي
// انجليزية الولايات المتحدة الامريكية
// نهاية الاجراء
end; // delph.forumalgerie.net

// نهاية الوحدة
procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
// اغلاق الملف إذا كان مفتوح
if folle1 then
BitBtn3Click(Sender); // delph.forumalgerie.net
end; // delph.forumalgerie.net

end.

-----------------------
اكتب هذه الكلمات في القاموس مثلا
book = كتاب
door = باب
open = افتح
close = اغلق
وشاهد نتيجة

نرجو من السادة الكرام الذين يطلعون على هذا العمل متواضع أن يردوا علي وشكرا

اللهم احفط بلدنا الجزائر وسائر بلاد المسلمين أمين

شكر وشكرا


منتدى دلفي تعليم يرحب بكم
delph.forumalgerie.net










عدل سابقا من قبل mah11 في 24/5/2015, 4:13 pm عدل 1 مرات (السبب : تنسيق الموضوع)

mah11
Admin

عدد المساهمات : 364
تاريخ التسجيل : 21/06/2013

http://delph.forumalgerie.net

الرجوع الى أعلى الصفحة اذهب الى الأسفل

رد: برمجة قاموس انجليزي عربي ناطق بالدلفي

مُساهمة  sdk11 في 12/6/2015, 11:51 pm

بارك الله فيك

sdk11
مبرمج مجتهد

عدد المساهمات : 108
تاريخ التسجيل : 19/09/2014

الرجوع الى أعلى الصفحة اذهب الى الأسفل

استعرض الموضوع السابق استعرض الموضوع التالي الرجوع الى أعلى الصفحة


 
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى