السلام عليكم و رحمة الله و بركاته
الاخوة الاعزاء بادء دي بدء اود ان اهنئكم على هدا الموقع الرائع و الجهد المبدول فيه مشرفين و اعضاء و امنى ان تقبلوا بي اخا بينكم نتشارك ماتيسير لدينا من علم و معرفة و الله ولي التوفيق.
اود ان ابدء اول مشاركة لي بنشر شرح مبسط عن المعطيات و التعامل معها في لغة الفجوال بيسك و سيكون هدا الشرح مدعما بالامثلة و اتمنى من جميع الاخوة ممن لديهم اية اضافات ان يقوموا باضافتها لتعم الفائدة على الجميع.
كما يعلم معظمنا و للمبتدئين ان المعطيات التي نتعامل معها في الفجوال بيسك عديدة و قد نحتاج في اي من برامجنا او تطبيقاتنا الى التحويل بين انماط هده المعطيات.
كيف دلك ؟
هدا ماسنراه معا
التحويل بين انماط المعطيات
سنرى في هدا المثال طريقة بناء تطبيق للتحويل بين انماط المعطيات المختلفة في الفجوال بيسك.
سيكون المثال عن التحويل بين النمطين
Double
Integer
كما تجدون في اخر الشرح قائمة بالانماط و توابع تحويلها.
ننشأ على الفورم مايلي:
TextBox
Button
Label
اضغط مرتين على مربع الامر و اكتب مايلي:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim Data1 As Double Dim Data2 As Integer Data1 = TextBox1.Text Data2 = Data1 Label1.Text = Str(Data2) End Sub
نقوم في السطرين الاول و الثاني بحجز مساحة للمتغيرين اللدين نود التحويل بينهما
في السطر الثالث نسند القيمة الموجودة في مربع النص الى المتغير الاول
ثم في السطر الرابع نساوي بين المتغيرين
ثم نظهر نتيجة التحويل في اخر سطر
في المثال الثاني و الدي يقوم بنفس العمل سنقوم باضافة كود بسيط في اعلى محرر الكود وهو كالاتي:
Option Strict On
هدا الكود يعني بان فجوال بيسك لن يقوم بالتحويل بين الانماط بشكل تلقائي و عندها سنواجه مشكلة عند التعليمة المحددة للتحويل أي عندما نسند قيمة للمتحولين لتصجحيح الخطأ يجب تغيير الكود الى التالي باستخدام تابع تحول القيمة الممررة الى عدد صحيح من النمط Integer
و هو التابع CInt
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim Data1 As Double Dim Data2 As Integer Data1 = Val(TextBox1.Text) Data2 = CInt(Data1) Label1.Text = Str(Data2) End Sub
لم تتغير بنية السطرين الاول و الثاني و لكن التغيير يبدأ من السطر الثالث حيث نحدد ان المتحول يساوي القيمة العددية في مربع النص
في السطر الرابع نصرح بان المتحول الثاني يساوي العدد الصحيح للمتحول الاول
ثم نظهر ناتج التحويل في السطر الاخير.
قد يتسال بعضنا مالعمل في حال نسيان احد توابع التحويل؟
الحل موجود و هو عن طريق استخدام التابع التالي ِCType
و يكون الكود على النحو التالي
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim Data1 As Double Dim Data2 As Integer Data1 = Val(TextBox1.Text) Data2 = CType(Data1, Integer) Label1.Text = Str(Data2) End Sub
قائمة بالانماط و توابع تحويلها
CBool = Boolean
CByte = Byte
CChar = Char
CDate = Date
CDbl = Double
CDec = Decimal
CInt = Integer
CLng = Long
CObj = Object
CShort = Short
CSng = Single
CStr = String
تحويل الحروف من النسق الكبير الى النسق الصغير
في هدا المثال سنرى طريقة استخدام التابع (UCase)
و التي تستخدم للتحويل من الحروف الصغيرة الى الكبيرة
على الفورم قم بانشاء مايلي:
TextBox
Button
Label
قم بالضغط مرتين على زر الامر و اكتب الكود التالي :
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim StrText1 As String StrText1 = TextBox1.Text Label1.Text = UCase(StrText1) End Sub
نقوم في مرحلة اولى بحجز الاسم StrText كمتغير من نوع String
ثم في المرحلة الثانية نصرح بان المتحول يساوي القيمة المدخلة في مربع النص
ثم النقطة الاخيرة و هي استخدام الدالة لتحويل ابيانات الى حروف كبيرة و اظهارها.
يمكن الاستغناء عن التصريح عن المتحول و دلك بكتابة مايلي:
Label1.Text = UCase(TextBox1.Text)
و لكن ينصح دائما بحجز مساحة للمتغيرات في فجوال بيسك و خاصة في البرامج الكبيرة.
يمكن استخدام هده الدالة في الحالات التي يريد صاحب البرنامج استخدام الحروف الكبيرة فقط لادخال البيانات و لايريد ان يتسبب بالازعاج للمستخدمين او في حالة كلمات السر .
توابع تحويل انماط المعطيات
Chr رمز محرف الى محرف
Format, LCase, UCase, String.ToUpper, String.ToLower, String.Format محارف كبيرة او صغيرة
DateSerial, DateValue تاريخ الى رقم
Hex , Oct رقم بالتمثيل العشري الى طريقة احرف التمثيل
Format, Str رقم الى سلسلة محارف
CBool, CByte, CDate, CDbl, CDec, CInt, CLng, CObj, CSng, CShort, CStr, Fix, Int نمط معطيات الى اخر
Asc محرف الى رمز المحرف
Val سلسلة محارف الى رقم
TimeSerial, TimeValue وقت الى رقم تسلسلي
التحقق من المعطيات
كل من هده التوابع يعيد القيمة True ادا كان الوسيط الممرر من القيمة المقابلة
IsArray () مصفوفة
IsDate () تاريخ
IsDBNull () قيمة Null من قاعدة البيانات
IsError ()خطأ
IsNumeric () قيمة رقمية
IsReference () متحول من النمطObject و غير مربوط بغرض فعلي و الا تعيد القيمة False
اتمنى ان يكون الشرح واضحا و ان تتحقق الفائدة المطلوبة من المشاركة.
أرجوا من الاخوة الخبراء اضافة تعليقاتهم لتعم الفائدة
