الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

نظرة ضمن مجال الأسماء MY

مغلق
بدأه محمد سامر أبو سلو في 16 مارس 2006 · 3 رد · 735 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

My Namespace

يزود مجال الأسماء My بنية شجرية مفهومة قابلة للفهم سريعا لاجرائيات الفريموورك تستهدف مجموعة من المهام التي تحتاجها بشكل متكرر

فعندما نريد قراءة ملف نصي يكون الحل ضمن Framework 1.1 - VB2003 كالتالي

Dim sr As New IO.StreamReader("c:\mytextfile.txt")
contents = sr.ReadToEnd
sr.Close()

وهذا الكود يعمل جيدا في VB2005 ولكن يمكنك كتابته بشكل أسرع كالكود التالي

contents = My.Computer.FileSystem.ReadAllText("c:\mytextfile.txt")

الفئة My.Computer.FileSystem هي واحدة من عد فئات ضمن امتداد اللغة My لذا أول شيئ يفترض أن تعمله هو التعرف عليها وما توفره لك

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

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

ومجال الأسماء My يستخدم هذه الفكرة لتقديم الكثير من الوظائف الهامة للجميع حيث يمكنك اعتبارها مكتبة كاملة لتحسين الانتاجية

يقدم مجال الأسماء My العديد من الاجرائيات مصنفة ضمن العديد من الفئات المختلفة My.Application, My.Computer, My.Forms, My.Resources,

My.Settings, My.User, My.WebServices وفي العادة يقدم وصولا سهلا للمعلومات ضمن احد تصنيفين أساسيين الفريموورك My.Application,

My.Computer, My.User و المشروع My.Forms, My.Resources, My.Settings,My.WebServices

My.Application

يوفر للمطورين معلومات حول التطبيق والخدمات كمعلومات التطبيق والعنوان والوصف ... الخ فـ OpenForms يوفر معلومات حول النوافذ المفتوحة في المشروع

الحالي و Log يوفر امكانيات للتعامل مع السجلات كتسجيل سجل للأخطاء الحاصلة في البرنامج انظر الكود كمثال

Dim winINIFile As String
Try
    winINIFile = My.Computer.FileSystem.ReadAllText("c:\windows\wind.ini")
Catch ex As IO.FileNotFoundException
    My.Application.Log.WriteException(ex, TraceEventType.Error,
        "Error Accessing INI File")
End Try

و مجموعة OpenForms أضافت امكانية شبيهة لما كان موجودا في VB6 حيث توفر مثلا وسيلة سهلة للتنقل عبر جميبع النوافذ المفتوحة في التطبيق من دون عناء

عمل متغيرات عامة أولا انظر الكود

For Each f As Form In My.Application.OpenForms
    Debug.WriteLine(f.Text)
    f.WindowState = FormWindowState.Minimized
Next

My.Computer and My.User

My.Compute يمكنك من التنقل عبر الخدمات والمعلومات حول الكمبيوتر المضيف فالفئة FileSystem توفر اجرائيات سهلة للعمل والاستعلام حول الملفات فمثلا

الكود التالي يستخدمها لنسخ جميع الصور الموجودة في مجلد My Pictures الخاص بالمستخدم الحالي إلى المجلد C:\Desktop Wallpaper ويعرض مؤشر تقدم إن

كانت عملية النسخ تأخذ وقتا أكثر من لحظات قليلة

Dim myPics As String = _
    My.Computer.FileSystem.SpecialDirectories.MyPictures

        My.Computer.FileSystem.CopyDirectory( _
            myPics, "C:\Desktop Wallpaper", _
            FileIO.UIOption.AllDialogs, _
            FileIO.UICancelOption.DoNothing)

        MessageBox.Show(My.Computer.FileSystem.GetFiles( _
            myPics, FileIO.SearchOption.SearchAllSubDirectories, _
            "*.jpg", "*.bmp").Count)

الفئة My.Computer.Ports تجعل عملية القراءة والكتابة من المدخل التسلسلي عملية بسيطة وهذه تعتبر من العمليات الصعبة ضمن الفريموورك فلعمل نفس وظيفة

الكود التالي كان يتطب كتابة الكثير من الكود سابقا

Dim comport As IO.Ports.SerialPort
comport = My.Computer.Ports.OpenSerialPort("COM1")
AddHandler comport.ReceivedEvent, AddressOf DataReceived

My.Computer.Audio يمكنك من عزف ملف خاص بالمستخدم أو أحد أصوات النظام

Dim musicFile As String
musicFile = My.Computer.FileSystem. _
    GetFiles("C:\WINDOWS\Media", _
    FileIO.SearchOption.SearchAllSubDirectories, _
    "*.wav")(0)
My.Computer.Audio.Play(musicFile)

My.Computer.Network يوفر مجالا واسعا من استدعاءات الشبكة كارسال واستقبال ping من آلة بعيدة أو رفع وتحميل الملفات أوتحديد وضع اتصالك وبعض

الأعمال الأخرى

If My.Computer.Network.IsAvailable Then
    If My.Computer.Network.Ping("www.duncanmackenzie.net") Then
        Debug.WriteLine("Site Available")

        My.Computer.Network.DownloadFile( _
            "http://www.duncanmackenzie.net/Articles/", _
            System.IO.Path.Combine( _
                My.Computer.FileSystem.SpecialDirectories.MyDocuments, _
                "articles.html"))
    End If
End If

وهناك العديد من الفئات المثيرة للاهتمام مثل My.Computer.Keyboard, My.Computer.Registry, My.Computer.Screen يمكنك محاولة استكشافها بنفسك

My.User من أبسط الفئات ضمن المجال My ومع ذلك فهي توفر الوصول لمعلومات هامة حول المستخدم الحالي للتطبيق

If My.User.IsAuthenticated Then
    If My.User.IsInRole("BUILTIN\Administrators") Then
        MsgBox("tsk, tsk... running as Admin are we?")
    End If
End If

عرض الاعدادات وأشياء أخرى من تطبيقك

القسم الذي يركز على تطبيقك ضمن المجال My يتضمن Settings, Resources, WebServices, Forms الاثنان الأولان يتعاملان مع البيانات المرتبطة بتطبيقك

فمن ضمن بيئة التطوير يمكنك ضبط العديد من عناصر المصادر المختلفة وفي حالتي ضبط الـ Resources أو Settings لمشروعك يمكنك الوصول المباشر إليها عبر

My ففور إضافتها لمشروك توفر الفئات My.Settings , My.Resources تعاملا سهلا مع تلك المعلومات فالكود التالي يقرأ ويعدل قيمة إعداد للمستخدم ثم يستخدم

الفئة My.Resources لقراءة نص مخصص

Dim lastRun As Date My.Settings.LastRun
My.Settings.LastRun = Now()

Dim myMessage As String = _
    String.Format(My.Resources.LastRunMessage, _
        lastRun.ToShortDateString)

MsgBox(myMessage)

بالاضافة إلى ذلك جميع النوافذ في مشروعك موجودة ضمن الفئة My.Forms و أي خدمات ويب موجودة ضمن الفئة My.WebServices وهذا يعني أنه يمكن

الوصول إليهم مباشرة فإذا عملت ربطا لخدمة WeatherForecast من webservicex.net مثلا يمكنك قراءة درجة الحرارة كالكود

Dim tempService As New net.webservicex.www.WeatherForecast()
Dim wf As net.webservicex.www.WeatherForecasts
wf = tempService.GetWeatherByZipCode("98052")
MsgBox(wf.ToString())

ويمكنك تبسيط الأمور كما يلي

MsgBox(My.WebServices.WeatherForecast.GetWeatherByZipCode("98052").ToString())

My.Forms يختلف عن My.Application.OpenForms بسبب أنه يوفر تواجدا لكل فئة من فئات نماذجك بدون شرط أن تكون مفتوحة حاليا فإذا كنت مبرمج VB6

سابقا ستجد أنها مفيدة كثيرا كالمثال

Private Sub showForm2_Click(ByVal sender As System.Object, _
        ByVal e As System.EventArgs) Handles showForm2.Click
    My.Forms.Form2.Show()
End Sub

Private Sub updateForm2_Click(ByVal sender As System.Object, _
        ByVal e As System.EventArgs) Handles updateForm2.Click
    My.Forms.Form2.Text = "Updated..."
End Sub

وفي الختام يوفر مجال الأسماء My في VB2005 طريقة سريعة وسهلة للوصول إلى وظائف عميقة ضمن الفريموورك بدون استخدام الفريموورك بشكل مباشر بالإضافة إلى استعادة بعض المفاهيم القديمة

عن عائشة رضي الله عنها أن النبي صلى الله عليه وسلم قال: إن الله يحب إذا عمل أحدكم عملا أن يتقنه

نعيب زماننا والعيب فينا ... وما لزماننا عيب سوانا

ونهجو ذا الزمان بغير ذنب ... ولو نطق الزمان لنا هجانا

محمد سامر أبو سلو

#2

جزاك الله خيرا اخى محمد على المعلومة،،

ننتظر المزيد من الابداع........

VB.NET and C# Comparison

http://www.harding.edu/fmccown/vbnet_csharp_comparison.html

002.gif

=-=-=-=-=-=-=
ذو العلم يشقى فى النعيم بعلمه .:. واخو الجهالة فى الشقاوة ينعم
=-=-=-=-=-=-=
يا من بدنياه اشتغل . قد غره طول الأمل . فالموت يأتى بغتة . والقبر صندوق العمل
=-=-=-=-=-=-=
ان لم تستطع ان تجد ما تفعله فافعل ما لم تسطع ان تجده

screen_shot_2011-05-19_at_12.44.49_pm.pn

#4

لا شكر على واجب

شكرا للمرور والردود

عن عائشة رضي الله عنها أن النبي صلى الله عليه وسلم قال: إن الله يحب إذا عمل أحدكم عملا أن يتقنه

نعيب زماننا والعيب فينا ... وما لزماننا عيب سوانا

ونهجو ذا الزمان بغير ذنب ... ولو نطق الزمان لنا هجانا

محمد سامر أبو سلو

هذا الموضوع مغلق.

مواضيع مشابهة