المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : إستخلاص الأسطر العربية من الكائن RichText بواسطة الأوتوبلاى فقط


المـهاجر
27-10-2014, 12:21 AM
بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته

كلنا نعلم أن الكائن RichText يسمح لنا بسحب أى سطر من داخله بواسطة الأمر RichText.GetLine
لكن هذا الأمر لا يصلح لإستخلاص المحارف العربية

بعد تحليل شيفرة الكائن تمكنت من صنع حل حصرى و سهل و يرتكز على دوال الأوتوبلاى فقط بدون اى مكتبات خارجية أو إضافات
فقط أكواد الأوتوبلاى القياسية تفى بالغرض

إصنع مشروع جديد و ضع به RichText و أكتب به عدد من الأسطر العربية
ضع أيضا زر

ضع فى الجلوبال
function Mohager_Arab_Rich_text(line)
arabic_chars={"","","","","","","",""," ","","","","","","","","","","","","","","","","","","","","","",""," ","!","","\#","$","\%","&","'","(",")","*","+",",","-",".","/","0","1","2","3","4","5","6","7","8","9",":",";","<","=",">","?","@","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","[","\"","]","^","_","`","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","{","|","}","~","","€","پ","‚","ƒ","„","…","†","‡","ˆ","‰","ٹ","‹","Œ","چ","ژ","ڈ","گ","‘","’","“","”","•","–","—","ک","™","ڑ","›","œ","‌","‍","ں"," ","،","¢","£","¤","¥","¦","§","¨","©","ھ","«","¬","­","®","¯","°","±","²","³","´","µ","¶","·","¸","¹","؛","»","¼","½","¾","؟"," ","ء","آ","أ","ؤ","إ","ئ","ا","ب","ة","ت","ث","ج","ح","خ","د","ذ","ر","ز","س","ش","ص","ض","ط","ظ","ع","غ","ف","ف","ف","ف","ف","و","ف","ق","ك","ل","م","ن","ه","و","ى","ي","é","ê","ë","ى","ي","î","ï","ً","ٌ","ٍ","َ","ô","ُ","ِ","÷","ّ","ù","ْ","û","ü","‎","‏","ے"}
len = String.Length(line);
text = ""
for i = 1,len do
char = String.Mid(line, i, 1);
asc = (String.Asc(char))+160
text = text..arabic_chars[asc]
end
end

ضع فى الزر
line = RichText.GetLine("RichText1", 1);
Mohager_Arab_Rich_text(line)
Dialog.Message("Notice", text, MB_OK, MB_ICONINFORMATION, MB_DEFBUTTON1);

لاحظ السطر الأول
غير رقم السطرالمطلوب إستخلاصه من 1 لما تشاء
غير إسم الكائن "RichText1" لما يناسب مشروعك
نفذ المشروع و عاين الإستخلاص فى الرسالة

الملف المفتوح بالمرفقات
تحديث
و توجد اضافة اكشن مع مثال لتسهيل العمل
مع خالص تحياتى

عبود عبود
27-10-2014, 07:57 AM
جزاك الله خيرا :abc_152:

طبعا الحل لا يعطى نتائج صحيحة 100% لذلك أميل إلى حل الأخ أبوبلقيس فهو أفضل ودقيق

فهل جربت مسافة تطويل للحرف أو عدة مسافات تطويل لحرف ؟

جيد جدا من حيث المحاولة والمجهود المبذول فهو مجهود مبرمج محترف حقا .


:abc_022:

المـهاجر
27-10-2014, 09:59 AM
يسهل جدا حل ذلك

ايضا الكود لا يشمل الحروف المشكلة بأى تشكيل
و يسهل جدا عمل ذلك ايضا


بناء مصفوفة لخريطة محارف من الصفر و تجهيزها للخضوع لحلقة واحدة لاستخراج المحارف
ليس عملا سهلا كما قد يبدو للوهلة الأولى

غير مقتنع ؟؟
حاول بنفسك إضافة مسافة تطويل الحرف التى ذكرتها للمصفوفة arabic_chars و ستقتنع

و إلا لكانت الشركة المنتجة للبرنامج indigorose وفرته من البداية
لكن الشركة لن تكون قادرة أبدا على الوفاء بكافة الترميزات الخاصة بكل المحارف لكل دول العالم
خصوصا ان منتجى البرنامج ليس بينهم عرب

و خصوصا ان الأوتوبلاى لا تدعم شيفرة اليونيكود من الأساس و تعتمد شيفرة أنسي عوضا عنها
لذلك جعلت ترميز الكائن خاص جدا
(اكيد انها تعلم ان هناك من يستطيع فك الترميز لصالح لغته فى كل دولة)
سأهتم انا بفك و اصلاح الترميز العربى

فقط احاول اكمال ما عجزت (أو تقاعست) عنه الشركة المنتجة

عبود عبود
27-10-2014, 07:21 PM
ليت وقت الفراغ الكبير الذى مضى يعود ........ لكنت حاولت معك أخى

تحياتى وتقديرى :abc_152:

ثامر أبو بلقيس
27-10-2014, 08:28 PM
مبدع أخي الكريم ودعني أشارك معكم هذا التنوع و إثراء للأفكار الجادة
بحل آخر قد يقبل و قد يرفض المهم محاولة استخلصت فيها السطر الاول
في هذا المثال ثم غيرت اللغة لما وجدته يخدمني ثم أرجع اللغة الأصلية

RichText.SetSelection("RichText1", 1, -1);
c = RichText.GetSelectionFormat("RichText1", true);
undo ={FaceName=c.FaceName};
RichText.SetSelection("RichText1", 1, -1);
belkiss={FaceName="Wingdings 3"};
RichText.SetSelectionFormat("RichText1", belkiss, true)
strText = RichText.GetLine("RichText1", 1);
Dialog.Message("Notice",strText);
RichText.SetSelection("RichText1", 1, -1);
RichText.SetSelectionFormat("RichText1", undo, true)


لعلها ستوفر قليلا من الجهد :abc_138:

ثامر أبو بلقيس
27-10-2014, 09:42 PM
قد تحذف ماجاء من أكواد في global functions
موفق:abc_138:

ثامر أبو بلقيس
27-10-2014, 09:47 PM
وهذا تعديل كي لا تهرب كلمات لأسطر موالية بسبب حجم الخط
RichText.SetSelection("RichText1", 1, -1);
c = RichText.GetSelectionFormat("RichText1", true);
undo ={FaceName=c.FaceName,Height=c.Height};
RichText.SetSelection("RichText1", 1, -1);
belkiss={FaceName="Wingdings 3", Height=0};
RichText.SetSelectionFormat("RichText1", belkiss, true)
strText = RichText.GetLine("RichText1", 1);
Dialog.Message("Notice",strText);
RichText.SetSelection("RichText1", 1, -1);
RichText.SetSelectionFormat("RichText1", undo, true)


بالتوفيق للجميع :abc_138:

عبود عبود
27-10-2014, 10:19 PM
جزاك الله خيرا أخى أبوبلقيس فعلا تغيير الخط ثم الحصول على النص يعطى نتيجة صحيحة
ويختصر أيضا الكثير من الأكواد السابقة


تحياتى لك أخى :abc_138:

المـهاجر
28-10-2014, 09:55 AM
شكرا اخوانى على تفاعلكم
سيتم مراجعة كافة الردود

و طبعا مرحبا باى حل يضفى فكرة جديدة
و ايضا لن اتنازل عن فك الترميز بعد ان تأكدت انه مستخدم من قبل بعض شركات الهواتف النقالة الشهيرة فى ترميز الرسائل القصيرة الخاصة بالجوالات
سيسمح ذلك لاحقا بقراءة رسائل الجوال من خلال الأوتوبلاى عبر كابل متوفر مع الجهاز
أو متوفر بالأسواق بسعر يقارب نصف دولار
نلتقى قريبا لإنشغال مؤقت

المـهاجر
28-10-2014, 05:05 PM
تم إعتماد الحل المقدم من الزميل أبو بلقيس كأساس لإضافة خاصة :abc_028:

تم تحديث مرفقات المشاركة الأولى بملف مفتوح به الطريقتين + الإضافة الخاصة بالإستخلاص

http://im48.gulfup.com/QKiZvu.jpg

شكرا لكل من شارك :abc_152:
شكر خاص للزميل ابو بلقيس لمشاركاته الفعالة :abc_022:
و السلام عليكم ورحمة الله وبركاته

ثامر أبو بلقيس
28-10-2014, 06:02 PM
ما شاء الله عمل مميز ومفيد
جزاك الله خيرا
و جعله في ميزان حسناتك إن شاء الله :abc_138:

امل الماضي
30-10-2014, 05:42 PM
شـكــ وبارك الله فيك ـــرا لك ... لك مني أجمل تحية .

الأمل القادم
07-11-2015, 10:28 PM
موفق بإذن الله ... لك مني أجمل تحية .

عبدوعزيز
19-02-2016, 08:47 PM
مشكوررررررررررررررر