منتدى الدورات التأهيلية اسئلة دورة ادخال بيانات ومعالجة نصوص والاختبار الشامل


عدد مرات النقر : 33,042
عدد  مرات الظهور : 38,680,351

موضوع مغلق
 
LinkBack أدوات الموضوع انواع عرض الموضوع
قديم 29-05-2006, 01:18 AM   #1

الصورة الرمزية صمت الجمال

 رقم العضوية :  35
 تاريخ التسجيل :  06-09-2004
 المشاركات :  1,120
 العمر :  38
 عدد النقاط :  10
 قوة التقييم :  صمت الجمال is on a distinguished road
 اخر مواضيع » صمت الجمال
 تفاصيل مشاركات » صمت الجمال
 أوسمة و جوائز » صمت الجمال
 معلومات الاتصال بـ صمت الجمال

افتراضي معالجة النصوص في الفيجوال بيسيك


مقدمة
ملاحظةتفترض هذه الدورة خبرة مسبقة في البرمجة بالفيجوال بيسيك، يمكنك الحصول على دورات في الفيجوال بيسيك من عدة أماكن أخرى.

مع ظهور انترنت أضحت الحاجة إلى معالجة النصوص ملحة وواضحة، سواءا في ملفات HTML أو بروتوكولات الإنترنت المختلفة أو برامج المحادثة وغيرها.

وتتيح اللغات المختلفة طرقا مختلفة إلا أنها غالبا ما تكون قادرة على أداء كل ما يخطر ببالك من عمليات معالجة.

في البداية يجب أن نتعرف قليلا عن السلاسل النصية في فيجوال بيسيك، تتكون السلسلة النصية في فيجوال بيسيك من سلسلة مرقمة متتالية من الأحرف، بحيث يأخذ الحرف الأول فيها الرقم 1.

ولتخزين السلاسل النصية والتعامل معها في فيجوال بيسيك يوجد نوع بيانات خاص لذلك هو النوع string، فيمكنك مثلا أن تعرف دالة لتحتوي على سلسلة نصية كالتالي :
كود:
Dim my************ As String
لكي نقوم بوصل ( لحم ) أكثر من سلسلة نصية بعضها ببعض فإننا نستخدم المعامل & أو المعامل + ، ويتم إحاطة النصوص في فيجوال بيسيك بأقواس اقتباس مزدوجة ( " )، بالنسبة للثوابت يوجد ثابت واحد مهم هو vbCrLf، وهو عبارة عن ثابت السطر الجديد، إذا أردت الآن أن تضع العبارة التالية في متغيرة :

كود:
Hi,
I'm mubarmej
ستحتاج إلى كتابة الشفرة التالية لعمل ذلك :

كود:
my************ = "Hi, " & vbCrLf & "I'm mubarmej"

الأساسيات >>

الأساسيات
الدالة chr
chr(code)
تقوم الدالة chr بأخذ قيمة بين 0 و 255 وتعيد الحرف الممثل لهذه القيمة في جدول رموز ASCII، على سبيل المثال العبارة التالية :

Hi,
I'm "mubarmej"

ستجد أنك لا تستطيع كتابتها بهذا الشكل :
my************ = "Hi," & vbCrLf & "I'm "mubarmej""

لأن البرنامج سيعتقد بأن نهاية السلسة النصية السابقة هي عند علامات الاقتباس التي تقع مباشرة قبل كلمة mubarmej وستظهر لك رسالة خطأ، لذلك فإننا نلجأ لاستخدام الدالة chr حيث أن رمز علامة الاقتباس المزدوجة في جدول ASCII هو 34، فتكون الصياغة الصحيحة للعبارة البرمجية السابقة كالتالي :
my************ = "Hi," & vbCrLf & "I'm " & chr(34) & "mubarmej" & chr(34)

الدالة Len
Len(string)
ستجد فيما بعد حاجة في كثير من الأحيان لمعرفة طول السلسلة النصية ( عدد الأحرف )، ولعمل ذلك استخدم الدالة Len، مرر إليها النص وستعيد لك عدد الحروف.
myLength = Len("mubarmej")

الدالة InStr
InStr([start ,]string1, string2[, compare])
يمكنك بواسطة هذه الدالة معرفة أول مكان يظهر فيه نص ما ضمن نص آخر أكبر منه.

الوسيطة الأولى هي وسيطة اختيارية تحدد مكان بدء البحث، أما الوسيطة الثانية string1 فتحدد السلسلة النصية التي سيتم البحث فيها، والوسيطة الثالثة string2 تحدد السلسلة النصية التي سيتم البحث عنها في السلسلة الأولى، أما الوسيطة الأخيرة فهي اختيارية أيضا وتحدد نوع المقارنة التي يجب إجرائها وهي تأخذ أحد الثوابت التالية :

0 - vbBinaryCompare
1 - vb************Compare
والفرق بينهما هو أن الأولى تراعي حالة الأحرف والثاني لا تراعي حالة الأحرف.

في المثال التالي الدالة i ستحتوي على القيمة 1 :
i = InStr("mubarmej","m")

وأما المثال التالي فستحتوي i فيه على القيمة 6 :
i = InStr(2,"mubarmej","m")

حيث أن الدالة في المثال السابق ستبحث عن الحرف m بادءة من الحرف الثاني ولذلك فهي لن تجد الحرف الأول.

الدالة str
Str(number)
قد تبدو الدالة str متشابهة مع الدالة chr، إلا أنها تؤدي وظيفة مختلف تماما، فهي تحول الأرقام إلى سلاسل نصية، وهي تفيد مثلا في حال أردت أن تقوم بالتحام بين رقمين فتقوم بتحويل كل منهما إلى سلسلة نصية وتطبق بينهما جمع السلاسل ( & ) الذي يختلف عن جمع الأرقام وبالتالي تحصل على سلسلة جديدة يمكنك أن تحولها إلى رقم من جديد، على سبيل المثال الدالة myNumber تحتوي على القيمة 123456.
myNumber = Str(123) & Str(456)

ستواجهك مشكلة في الشفرة السابقة حيث يقوم فيجوال بيسيك بإضافة مسافة قبل كل سلسلة نصية تنتج من الدالة السابقة، ستعرف فيما بعد كيف تعالج هذه المشكلة .


الاقتطاع

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

الدالة Left
Left(string, length)
حيث تقوم بوضع سلسلة نصية string وتحدد الجزء الذي تريد اقتطاعه من بداية السلسلة length، والتعبير بكلمة من بداية السلسلة أدق من يسار السلسلة لأن هذا قد يحدث اشتباها في السلاسل النصية للغات التي تكتب من اليمين إلى اليسار مثل العربية، هنا تعيد السلسلة العدد المحدد من الحروف من اليمين أي أنها لا تهتم لاتجاه ظهور أحرف السلسة وإنما اتجاه تخزينها، وللتخلص من هذه المشكلة سنقول بداية السلسلة .

الدالة Right
مطابقة للدالة Left في كل شيء، إلا أنها تأخذ العدد المحدد من الحروف من نهاية السلسلة.

الدالة Mid
Mid (string, start[ ,length])
تعيد الدالة Mid عددا من الأحرف قدره length بدءا من حرف معين هو start، في سلسلة نصية string لاحظ أيضا أن الوسيطة length اختيارية وإذا لم تمرر بها أي قيمة فإن الدالة ستعيد الأحرف إلى نهاية السلسلة .

في المثال التالي ستحتوي المتغيرة my************ على العبارة 'm m :
my************ = Mid("I'm mubarmej", 2, 4)

أما في المثال التالي فستحتوي على الكلمة mubarmej :
my************ = Mid("I'm mubarmej", 5)

التصريح Mid
يقوم التصريح Mid باستبدال مقطع محدد من النص بنص آخر، وهو يكتب في صورة مشابهة جدا لطريقة كتابة دالة Mid ولكن توضع بعده علامة مساواة وبعدها العبارة الجديدة، في المثال التالي ستحتوي المتغيرة my************ على القيمة I'm mubarmej :

name = "mubarmej"
my************ = "I'm name"
Mid(my************, 5) = name

حيث سيتم حذف الجزء المحدد بالخاصية Mid ويوضع الجزء الذي بعد علامة المساواة في مكان الجزء المحذوف .

ملاحظةيعتبر التصريح Mid عملية تحوير أكثر منها اقتطاعا.


التحوير

التحوير
يمكنك عمل الكثير من التغييرات والتحويرات في السلاسل النصية، الأمر يشبه تطبيق الفلاتر على هذه النصوص وتوجد العديد من هذه الفلاتر مدمجة في الإصدارة السادسة من فيجوال بيسيك، وفيما يلي أهمها :

الدالة LCase
LCase(string)
تعيد الدالة LCase نسخة من النص string تكون فيه جميع الحروف صغيرة Lowercase المتغيرة my************ في المثال التالي ستحتوي على عبارة it works :

my************ = "It Works"
my************ = LCase(my************)

الدالة UCase
LCase(string)
نفس الدالة السابقة لكنها تقوم بتحويل الأحرف إلى كبيرة Uppercase.

الدالة strReverse
strReverse(string)
تعيد السلسلة string معكوسة، أي تبدأ من البداية وتنتهي من النهاية، المتغيرة my************ في المثال التالي ستحتوي على العبارة emoclew :
my************ = strReverse("welcome")

الدالة Replace
Replace(string1, string2, string3, start, count[, compare])
وتقوم باستبدال النص string2 بالنص string3 ضمن السلسلة string1، أي أنها تبحث في النص string1 عن النص string2 وعندما تجده فإنها تحذفه منه وتضع مكانه string3، ويمكن تحديد نقطة بداية البحث بالوسيطة start، وعدد مرات الاستبدال القصوى بالوسيطة count، ضع القيمة -1 لاستبدال الكل، وطريقة المقارنة بالوسيطة compare كما ذكر سابقا.

المتغيرة my************ في المثال التالي ستحتوي على القيمة Hi Everyone :
my************ = Replace("Welcome Everyone,", "Welcome", "Hi", 1, -1)

توقيع :




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


صمت الجمال غير متواجد حالياً
رسالة لكل زوار منتديات العبير

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

قديم 29-05-2006, 01:19 AM   #2

الصورة الرمزية صمت الجمال

 رقم العضوية :  35
 تاريخ التسجيل :  06-09-2004
 المشاركات :  1,120
 العمر :  38
 عدد النقاط :  10
 قوة التقييم :  صمت الجمال is on a distinguished road
 اخر مواضيع » صمت الجمال
 تفاصيل مشاركات » صمت الجمال
 أوسمة و جوائز » صمت الجمال
 معلومات الاتصال بـ صمت الجمال

افتراضي


مثال
إزالة وسوم HTML من النص
الآن بعد أن عرفت الكثير من الدوال السابقة يمكنك أن ترى مثالا على هذه الدوال، حاول أن تدقق في المثال جيدا لتعرف فكرة عمله.

تتكون نصوص HTML من جزأين هما المحتوى والوسوم، والفرق بينهما هو أن الوسوم تكون موجودة بي القوسين < و > ، الشفرة التالية عبارة عن دالة تقوم بإزالة الوسوم من ملف HTML :

ملاحظةهذه الدالة مأخوذة بالنص من الإنترنت .


اقتباس:
Function Remove*********s(HTML As String) As String
Dim buf As String, pos As Integer

pos = InStr(HTML, "<")
'check for no *********s situation
If pos = 0 Then
Remove*********s = HTML
Exit Function
Enf If

Do
' Add ************ before the first ********* to beffer
buf = buf & Left(HTML, pos - 1)
' Find end of *********
pos = InStr(HTML, ">")
' Remove everythin up to the
' end of the ********* from ************
If pos = 0 Then Exit Do
HTML = Mid(HTML, pos + 1)
' Find the start of the next *********
pos = InStr(HTML, "<")
If pos = 0 Then Exit Do
Loop While True
Remove*********s = buf
End Function


صمت الجمال غير متواجد حالياً
قديم 29-05-2006, 10:55 AM   #3
Has A Reputation Beyond Repute

الصورة الرمزية أحمد نسيب

 رقم العضوية :  220
 تاريخ التسجيل :  17-10-2005
 المشاركات :  4,029
 الجـنـس :  ذكر
 عدد النقاط :  50215
 قوة التقييم :  أحمد نسيب has much to be proud ofأحمد نسيب has much to be proud ofأحمد نسيب has much to be proud ofأحمد نسيب has much to be proud ofأحمد نسيب has much to be proud ofأحمد نسيب has much to be proud ofأحمد نسيب has much to be proud ofأحمد نسيب has much to be proud ofأحمد نسيب has much to be proud ofأحمد نسيب has much to be proud ofأحمد نسيب has much to be proud of
 اخر مواضيع » أحمد نسيب
 تفاصيل مشاركات » أحمد نسيب
 أوسمة و جوائز » أحمد نسيب
 معلومات الاتصال بـ أحمد نسيب

افتراضي


من جد انت مافي مثلك

ربي يعطيك العافية والقوة


الف الف شكر يا سيدة المنتدى الراقية

توقيع :

سبحانك اللهم وبحمدَك

من يهتم بنفسه العليا يصبح رجلا عظيما، أما من يهتم بنفسه السفلي فيصبح رجل وضيعا.
منسيوس
فيلسوف صيني كونفوشيوسي قديم.

أحمد نسيب غير متواجد حالياً
قديم 29-05-2006, 11:50 AM   #4

الصورة الرمزية عبد الله الساهر

 رقم العضوية :  1
 تاريخ التسجيل :  22-07-2004
 المشاركات :  71,583
 الدولة :  ムレ3乃乇乇尺
 الجـنـس :  ذكر
 العمر :  38
 عدد النقاط :  243859
 قوة التقييم :  عبد الله الساهر تم تعطيل التقييم
 SMS :

حتى لو اجتهدت و قطعت فؤادك.. ووضعته للناس في طبق فضي ليرضوا عنك لن تفلح وربما لن تصل لمستوى يرضيك أنت عن نفسك فاجتهد ليكون الله وحده راضياً عنك وأغمض عينيك عن ما سواه

 اخر مواضيع » عبد الله الساهر
 تفاصيل مشاركات » عبد الله الساهر
 أوسمة و جوائز » عبد الله الساهر
 معلومات الاتصال بـ عبد الله الساهر

افتراضي


الله يبارك فيكي


ويجزيكي خير

توقيع :





رحمك الله يا أنس
وجعل الفردوس دارك ومستقرك



عبد الله الساهر غير متواجد حالياً
قديم 29-05-2006, 05:53 PM   #5

الصورة الرمزية أمـ جود ـ

 رقم العضوية :  4
 تاريخ التسجيل :  22-07-2004
 المشاركات :  6,182
 العمر :  36
 عدد النقاط :  32
 قوة التقييم :  أمـ جود ـ is on a distinguished road
 اخر مواضيع » أمـ جود ـ
 تفاصيل مشاركات » أمـ جود ـ
 أوسمة و جوائز » أمـ جود ـ
 معلومات الاتصال بـ أمـ جود ـ

افتراضي


يعطيك الف مليوووون مليووون عافية

توقيع :



مٍَآعُآدُ يًرٍضَيًنٍيً وَفٍآ...و لآيًزٍعُلنٍيً جََفٍآ..
مٍَتِسِآويًهُـ َفٍيً خٍآطَرٍيً ..ظِلمٍَـ آلبُشُرٍ وآنٍصِآَفٍهُمٍَـ..
ولو تِوَقٍَِفٍ آلدُنٍيًآ عُلىٍ شُمٍَعُ آلغٌَرٍآمٍَـ آلليً طََفٍآ..
بُعُضَ آلشُمٍَوعُ..أنٍآ أتِعُمٍَدُ گسِرٍهُآ وآتِلآَفٍهُآ..

أمـ جود ـ غير متواجد حالياً
قديم 31-05-2006, 02:35 AM   #6

الصورة الرمزية صمت الجمال

 رقم العضوية :  35
 تاريخ التسجيل :  06-09-2004
 المشاركات :  1,120
 العمر :  38
 عدد النقاط :  10
 قوة التقييم :  صمت الجمال is on a distinguished road
 اخر مواضيع » صمت الجمال
 تفاصيل مشاركات » صمت الجمال
 أوسمة و جوائز » صمت الجمال
 معلومات الاتصال بـ صمت الجمال

افتراضي


الله يبارك لي فيكم انتم


انتم الخير والبركة

صمت الجمال غير متواجد حالياً
موضوع مغلق

مواقع النشر (المفضلة)


أدوات الموضوع
انواع عرض الموضوع

تعليمات المشاركة
لا تستطيع إضافة مواضيع جديدة
لا تستطيع الرد على المواضيع
لا تستطيع إرفاق ملفات
لا تستطيع تعديل مشاركاتك

BB code is متاحة
كود [IMG] متاحة
كود HTML معطلة
Trackbacks are متاحة
Pingbacks are متاحة
Refbacks are متاحة


المواضيع المتشابهه
الموضوع كاتب الموضوع المنتدى مشاركات آخر مشاركة
وقفات تربوية من سيرة الرسول في القرآن الكريم عزوف ۩ ۞ ۩ مجلس القرآن الكريم وعلومه ۩ ۞ ۩ 11 03-01-2018 03:12 AM
ابي مساعدتكم بنماذج الأكسل ندوي استفسارات شهادة تقنية المعلومات CIT 15 22-02-2017 12:13 AM
لقاح الإنفلونزا الموسمي أبكاني قرآن ربي مجلس الصحة والغذاء 8 28-08-2015 03:35 AM
أكثر المدن الصناعية كآبة في العالم "نوريلسك" Rassan روائع الفن التشكيلي والفوتغرافي 10 03-08-2015 10:28 PM
مشكلة ولدي وألي عنده حلي يفدني نصف الليل مجلس عـائـلـتـي 6 15-06-2014 12:23 AM


الساعة الآن 12:49 PM


Powered by vBulletin® Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO 3.6.0 TranZ By Almuhajir
Ads Organizer 3.0.3 by Analytics - Distance Education
جميع الحقوق محفوظة لـ : منتديات العبير
المحتوى المنشور فى موقع العبير لايعبر بالضرورة عن وجهة نظر الإدارة وإنما يعبر عن وجهة نظر كاتبها