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

مشاهدة النسخة كاملة : استخلاص أسطر عربية من RichText بواسطة ListBox


ثامر أبو بلقيس
24-10-2014, 01:25 AM
بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته

اليوم تريد استخلاص أسطر من عنصر RichText مكتوب فيه نص عربي
باستعمال عنصر ListBox التي سنكتب فيها في item data الخاصة بها أرقام الأسطر التي سنتوقف عندها
اذا كتبنا في الخلية الأولى 5 مثلا فإننا سنتخلص الأسطر 1 - 2 - 3 - 4 ونتوقف عند الخمسة لأنها ستكون استخلاص
جديد مع أخذ بعين الاعتبار السطر الفارغ بأنه سطر
-------------------------------------------------------------------------
فعل الاضافة Memory
ازرع في global functions
function EM_GETLINE(HWND, nLine)
Buffer = Memory.Allocate(1024);
Memory.PutLong(Buffer, 1024);
DLL.CallFunction("User32.dll", "SendMessageA", HWND..", 196, "..nLine..", "..Buffer, DLL_RETURN_TYPE_LONG, DLL_CALL_STDCALL)
sLine = Memory.GetString(Buffer, -1, "Ascii");
Memory.Free(Buffer);
return sLine
end
-----------------------------------------------
أدرج في مشروعك RichText أكتب فيه نص عربي
-----------------------------------------------------
أضف عنصر ListBox في item data رقم السطر الذي ترغب توقف الاستخلاص عنده
--------------------------------
في عنصر ListBox وفي الحدث on select
أكتب :
f = String.ToNumber(ListBox.GetSelected("ListBox1")[1]);
----
HWND = RichText.GetProperties("RichText1").WindowHandle;
---
f2 =""
for i =String.ToNumber( ListBox.GetItemData("ListBox1", f-1)),String.ToNumber(ListBox.GetItemData("ListBox1", f))-1 do
sLineText = EM_GETLINE(HWND, i-1)
f2=f2..sLineText.."\r\n"
end
result = Dialog.Message("Notice", f2);

-----------------------------------------------------------------------


وهذه طريقة أخرى لاستخلاص السطر بدون ااستعمال ListBox كوسيط
my_table = {};
result = String.Replace(RichText.GetText("RichText1", false), " ", "ثامر2014", true);
for token in string.gmatch(result, "[^%s]+") do
e = #token/#token
Table.Insert(my_table, e, token);
e=e+1
belkiss =1+#(my_table)
end
------------- الرقم 1 هو دال مباشرة على السطر الاول غيره برقم السطر الذي تريد ----
FF=my_table[belkiss-1]
X = String.Replace(FF, "ثامر2014", " ", true);
---------------------------------------------------------------------------------
Dialog.Message("Notice",X);


:abc_023:

أبو يوسف
24-10-2014, 04:48 PM
جزاك الله خيرا أخانا أبا بلقيس على جهودك الطيبة

.

المـهاجر
24-10-2014, 06:59 PM
Buffer = Memory.Allocate(1024);
Memory.PutLong(Buffer, 1024);
DLL.CallFunction("User32.dll", "SendMessageA", HWND..", 196, "..nLine..", "..Buffer, DLL_RETURN_TYPE_LONG, DLL_CALL_STDCALL)



:abc_000: :abc_000: :abc_000:

ثامر أبو بلقيس
24-10-2014, 07:19 PM
بارك الله فيك



ملاحظة : تم تعديل المشاركة لسوء تقدير مني

azizsoft
25-10-2014, 03:56 PM
بسم الله الرحمن الرحيم

جزاكم الله خيرا استاذ ابو بلقيس
على جهودكم القيمة والنافعة

وفقكم الله

ثامر أبو بلقيس
25-10-2014, 04:16 PM
بسم الله الرحمن الرحيم

جزاكم الله خيرا استاذ ابو بلقيس
على جهودكم القيمة والنافعة

وفقكم الله

مرور عطر مشرفنا المحترم :abc_138:
تقديري

ثامر أبو بلقيس
25-10-2014, 04:17 PM
جزاك الله خيرا أخانا أبا بلقيس على جهودك الطيبة

.

مرور عطر أستاذي الكريم :abc_138:

المـهاجر
25-10-2014, 05:00 PM
؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟
وقت طرحى لمشاركتى لم أكن اقصد سوى تشجيعك :abc_070:
و أننى أستفدت من الكود المقتبس
اليوم فقط فهمت سبب ردك الغريب
سلام اخى المحترم :abc_102:

ثامر أبو بلقيس
25-10-2014, 05:05 PM
؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟
وقت طرحى لمشاركتى لم أكن اقصد سوى تشجيعك :abc_070:
و أننى أستفدت من الكود المقتبس
اليوم فقط فهمت سبب ردك الغريب
سلام اخى المحترم :abc_102:

لاتحكم من زاوية واحدة

طبعا لك كل الاحترام

المـهاجر
25-10-2014, 05:07 PM
راجع الخاص

ثامر أبو بلقيس
25-10-2014, 05:09 PM
راجع الخاص

لم يصلني شيء على الخاص تفقد قد تكون أرسلته خطأ

موفق

ثامر أبو بلقيس
25-10-2014, 05:22 PM
في كل الحالات تقبل اعتذاري
وتقديري :abc_138:

المـهاجر
25-10-2014, 05:42 PM
في كل الحالات تقبل اعتذاري
وتقديري :abc_138:

شكرا أخى
و لا عذر عليك
و اكرر شكرى على تقديمك لحل مشكلة سحب الأسطر العربية من الريتش تيكست :abc_152:

عبود عبود
26-10-2014, 10:39 PM
جزاك الله خيرا:abc_152:

رائع جداااا .......... تم تعديل المشاركة بعد المقارنه مع حل آخر


ممتاز 5 نجوم أخى

ثامر أبو بلقيس
27-10-2014, 08:36 PM
بارك الله فيك
متوقع منك أستاذي الكريم هذا التشجيع
جزاك الله كل خير شكرا :abc_138:

ثامر أبو بلقيس
19-11-2014, 12:03 AM
السلام عليكم ورحمة الله وبركاته
وهذه طريقة أخرى لاستخلاص السطر بدون ااستعمال ListBox كوسيط
my_table = {};
result = String.Replace(RichText.GetText("RichText1", false), " ", "ثامر2014", true);
for token in string.gmatch(result, "[^%s]+") do
e = #token/#token
Table.Insert(my_table, e, token);
e=e+1
belkiss =1+#(my_table)
end
------------- الرقم 1 هو دال مباشرة على السطر الاول غيره برقم السطر الذي تريد ----
FF=my_table[belkiss-1]
X = String.Replace(FF, "ثامر2014", " ", true);
---------------------------------------------------------------------------------
Dialog.Message("Notice",X);

برجاء ضم المحاولة في بداية المشاركة :abc_138:

عبود عبود
19-11-2014, 06:13 PM
السلام عليكم ورحمة الله وبركاته

برجاء ضم المحاولة في بداية المشاركة :abc_138:


تم عمل اللازم

تحياتى

ثامر أبو بلقيس
19-11-2014, 07:29 PM
بارك الله فيك .. شكرا
تقديري :abc_138:

الحارث بن فيصل
20-11-2014, 05:58 PM
شـكــ وبارك الله فيك ـــرا لك ... لك مني أجمل تحية .

أبو فارس
23-11-2014, 04:32 PM
جعل الله جهدكم في ميزان حسناتكم

ثامر أبو بلقيس
16-12-2014, 12:44 PM
مرور عطر :abc_138: