حمادي 100
عدد الرسائل : 250 العمر : 49 نقاط : 23054 تاريخ التسجيل : 22/08/2014
| موضوع: البحث في القرآن الكريم بالتشكيل أو بدونه الثلاثاء يوليو 07, 2015 6:50 am | |
| البحث في القرآن الكريم بالتشكيل أو بدونه
السلام عليكم ورحمة الله وبركاته تريد صناعة أداة بحث عن مفردة في القرآن الكريم أو آية كريمة و معرفة رقم الاية و السورة جيد 1- حمل الملف الموجود في الرابط ادناه http://www.gulfup.com/?5XQtyb
ضعه في مجلد Docs ضف في ساحة العمل Input1 لتكتب فيها المفردة المراد البحث عنها و تكون بالتشكيل 02 - فعل الاضافة SQLite 03 - ضف زرا و ازرع فيه
- الكود:
-
كود PHP: db = SQLite.Open("AutoPlay\\Docs\\belkiss.db"); s=SQLite.QueryToTable(db, "select * from rabie"); result4 = Input.GetText("Input1"); ----------------------------------------------------------- for i,v in pairs(s.Data) do for y=1,114 do if s.Data[i]["nsoura"]==""..y then g = String.Find(s.Data[i]["alaya"],result4, 1, false); if g~= -1 then Dialog.Message(s.Data[i]["soura"].." ".."الآية".." "..s.Data[i]["naya"], s.Data[i]["alaya"]); end end end end
للتجربة أكتب الان مثلا الكلمة " التَّوَّاب " في الانبوت 1 و لاحظ النتائج حيث ستظهر الاية الكريمة المتضمنة للمفردة و في نافذة الرسالة الحوارية ستجد رقم الاية و السورة
---------------------------------------------------------------------------------------------------------------- لكن اذا لم تقم بتشكيل المفردة و لتكن " التواب " لن تظهر النتائج كون أننا نبحث في قاعدة بيانات فيها الكلمات بالتشكيل -------------------------------------------------------------------------------------------------------------------- ما الحل ؟ نقوم بكتابة الكلمة أو الاية بغير تشكيل في الانبوت عند البحث في الايات نحذف علامات التشكيل حيث نستبدل كل علامة بلاشيء أي نقوم بالاستبدال كود الاستبدال العادي لن يعطي نتائج لأننا نحتاج الى جملة من الاستبدالات دفعة واحدة راجع الدرس التالي
الاستبدالات في الاوتوبلاي
السلام عليكم ورحمة الله وبركاته
من السهل جدا اذ كان عندك أثر كتابي و تريد استبدال في مفردة أن تستعمل الكود التالي لتغير في كلمة timer الحرف i بـ a لتصبح tamer
- الكود:
-
كود PHP: Dialog.Message("Notice", String.Replace("timer", "i", "a", false));
لكن لو كنت أريد القيام بمجموعة استبدالات في آن واحد كأن أغير في timer مايلي : t ب C i ب l m ب e e ب a ---------------------- ما الحل ؟؟
- الكود:
-
كود بلغة HTML:
sostituzioni ={["t"] = "C",["i"] = "l",["m"] = "e",["e"] = "a"}s = "timer"r
----------------------------------------------------------------------------------------------------
نستغله في الكود السابق ليصبح الكود كالتالي :
- الكود:
-
كود PHP: db = SQLite.Open("AutoPlay\\Docs\\belkiss.db"); s=SQLite.QueryToTable(db, "select * from rabie"); result4 = Input.GetText("Input1"); ----------------------------------------------------------- for i,v in pairs(s.Data) do for y=1,114 do if s.Data[i]["nsoura"]==""..y then istibdalate={["َ"] = "",["ً"] = "",["ُ"] = "",["ِ"] = "",["ْ"] = "",["ّ"] = "",["ِ"] = "",["ٌ"] = ""} m = s.Data[i]["alaya"] abou_belkiss = string.gsub (m, ".",istibdalate) g = String.Find(abou_belkiss,result4, 1, false); g2 = String.Find(s.Data[i]["alaya"],result4, 1, false); if g~= -1 or g2~= -1 then Dialog.Message(s.Data[i]["soura"].." ".."الآية".." "..s.Data[i]["naya"], s.Data[i]["alaya"]); end end end end
طيب ... نجرب الان و نكتب " التواب " بدون تشكيل ستظهر النتائج اذن لدينا طريقتي بحث وفق الكود السابق
ياإما تكون كل الحروف بالتشكيل أو لا تشكل أي حرف
بالتوفيق ----------------------------------------------------------------------------------- نواصل
قلنا الكود الاول سيتعامل مع المفردات اذا كانت بالتشكيل
أما الكود الثاني فسيتعامل بحالتين - إما كل الحروف بالتشكيل - أو الحروف كلها ليست بالتشكيل
لكن ماذا لو المستعمل قام بتشكيل حروف و ترك حروف بدون تشكيل
إليك الحل :
- الكود:
-
كود PHP: db = SQLite.Open("AutoPlay\\Docs\\belkiss.db"); s=SQLite.QueryToTable(db, "select * from rabie"); gg = Input.GetText("Input1"); istibdalate2={["َ"] = "",["ً"] = "",["ُ"] = "",["ِ"] = "",["ْ"] = "",["ّ"] = "",["ِ"] = "",["ٌ"] = ""}
result4 = string.gsub (gg, ".",istibdalate2) ----------------------------------------------------------- for i,v in pairs(s.Data) do for y=1,114 do if s.Data[i]["nsoura"]==""..y then istibdalate={["َ"] = "",["ً"] = "",["ُ"] = "",["ِ"] = "",["ْ"] = "",["ّ"] = "",["ِ"] = "",["ٌ"] = ""} m = s.Data[i]["alaya"] abou_belkiss = string.gsub (m, ".",istibdalate) g = String.Find(abou_belkiss,result4, 1, false); if g~= -1 then Dialog.Message(s.Data[i]["soura"].." ".."الاية".." "..s.Data[i]["naya"], s.Data[i]["alaya"]); end end end end
تقديري للجميع
ماذا لو اردنا استبدال اليست بوكس ب كومبوبوكس السلام عليكم ورحمة الله وبركاته سأبدأ من آخر مشاركة لك و هي تتعلق بإجراءات تعديل حيث تريد حذف ListBox2 المعبر عن " من " ListBox3 المعبر عن " إلى" Input1 المعبر عن مرات التكرار
جيد ..... أحذفهم -------------------------------------------------------------- ضف في تجميعيتك 01 - ComboBox وسيكون اسمه ComboBox2 و هومعبر عن " من " في الحدث on select لهذا العنصر أكتب :
- الكود:
-
كود PHP: b1= ComboBox.GetSelected(this); b1 = String.ToNumber(b1); bidaya = String.ToNumber(ComboBox.GetItemText(this, b1)); index_1=ComboBox.GetItemData(this, b1);
02 - ComboBox وسيكون اسمه ComboBox3 و هومعبر عن " إلى" في الحدث on select لهذا العنصر أكتب : - الكود:
-
كود PHP: n1= ComboBox.GetSelected(this); n1 = String.ToNumber(n1); nihaya = String.ToNumber(ComboBox.GetItemText(this,n1)); index_2=ComboBox.GetItemData(this, n1);
03 - ComboBox وسيكون اسمه ComboBox4 و هومعبر عن " مرات التكرار" في هذا العنصر و في جهة item text أكتب أرقاما بدء من 1 إلى غاية 10 أو أكثر كما تريد
04 - لدينا في التجميعية عنصر ListBox1 سيطرأ تعديل في بعض الأكواد في الحدث on select لهذا العنصر امسح المكتوب و عوضه بـ - الكود:
-
كود PHP: ComboBox.ResetContent("ComboBox2"); ComboBox.ResetContent("ComboBox3"); ListBox.DeleteItem("ListBox4", LB_ALLITEMS); MediaPlayer.Stop("Plugin1"); f=ListBox.GetCount(this); n= ListBox.GetSelected(this); tt= ListBox.GetItemText(this, n[1]); if n ~= nil and chiek ~= nil then v = ListBox.GetItemData(this, n[1]); hh = File.Find(_SourceFolder.."\\AutoPlay\\Docs\"..v.."\"..chiek.."\", "*.mp3", false, false, nil, nil); for total=1,#hh do ComboBox.AddItem("ComboBox2", total, _SourceFolder.."\\AutoPlay\\Docs\"..v.."\"..chiek.."\"..total..".mp3"); ComboBox.AddItem("ComboBox3", total, _SourceFolder.."\\AutoPlay\\Docs\"..v.."\"..chiek.."\"..total..".mp3"); end end ComboBox.SetSelected("ComboBox2", 1); ComboBox.SetSelected("ComboBox3", 1);
05 - نأتي الان لزر التشغيل أو الاستماع أي Hotspot2
امسح المكتوب وعوضه بـ - الكود:
-
كود PHP: ListBox.DeleteItem("ListBox4", LB_ALLITEMS); MediaPlayer.Stop("Plugin1"); if index_1~= nil and index_2~= nil then for i = 1,rept do if index_1 == index_2 then result = ListBox.AddItem("ListBox4", index_1, ""); elseif index_1 ~= index_2 then for j=bidaya,nihaya do result = ListBox.AddItem("ListBox4",ComboBox.GetItemData("ComboBox3", j), ""); end end end end -------------------------------------- my_table = {}; ---------- for n =1,ListBox.GetCount("ListBox4")do vv=ListBox.GetItemText("ListBox4", n); path_parts = String.SplitPath(vv); p=path_parts.Drive b=path_parts.Folder c=path_parts.Extension Table.Insert(my_table, 1, String.ToNumber(path_parts.Filename)); end ListBox.DeleteItem("ListBox4", LB_ALLITEMS); selectionsort(my_table) for bb = 1, table.getn(my_table) do result = ListBox.AddItem("ListBox4", p..b..my_table[bb]..c, ""); end k = ListBox.GetItemText("ListBox4", 1); if k~= nil then MediaPlayer.Load("Plugin1", k); MediaPlayer.Play("Plugin1"); end 05 - ما كتبناه في global functions يبقى نفسه أي
- الكود:
-
كود PHP: function ScrollInputText(sObject)
strText = Input.GetText(sObject);
strText = String.Right(strText, String.Length(strText)-1)..String.Left(strText, 1)
Input.SetText(sObject, strText);
end
function selectionsort(a) for pos = 1, table.getn(a) do local min = pos for i = pos + 1, table.getn(a) do if a[i] < a[min] then min = i end -- if end -- for if min ~= pos then a[pos], a[min] = a[min], a[pos] end end end لاتنسو الدعاء للاخ صاحب الموضوع الاستاذ ثامر أبوبلقيس
| |
|