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

كيفية ارسال عدد لا محدود من الوسطاء(مصفوفة الوسطاء)

بدأه alialalian في 6 يونيو 2009 · 3 رد · 479 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بسم الله الرحمن الرحيم

عند القيام بانشاء اجراء او دالة من الطبيعي ان نحدد الوسطاء التي

تدخل الى الاجراء او الدالة مثلا :

	Sub msg1(ByVal str As String)
		MsgBox("welcome " & str)
	End Sub

او

	Function msg2(ByVal str As String) As String
		Return "welcome " & str
	End Function

يتضح ان الاجراء والدالة يستقبلان وسيط واحد من نوع نص

ولا يمكن ارسال اكثر من قيمة لهما الا اذا عرفنا ضمن الوسيط

العدد المطلوب من الوسطاء مثل :

	Sub msg1(ByVal str As String, ByVal id As Integer)
		MsgBox("welcome " & str & "your ID :" & id)
	End Sub

او

	Function msg2(ByVal str As String, ByVal id As Integer) As String
		Return "welcome " & str & "your ID :" & id
	End Function

ولكن ماذا لو اردنا ارسال عدد غير محدود او اننا بحاجة الى اجراء او دالة

لا نعرف عدد الاجراءات التي يمكن ان تستقبلها

الحل هو استعمال مصفوفة الوسطاء :

	Sub msg1(ByVal str As String, ByVal id As Integer, ByVal ParamArray a() As String)
		Dim s As String = "welcome " & str & "your ID :" & id
		For i As Integer = 0 To a.Length - 1
			s = s & " note " & i & "(" & a(i) & ")"
		Next
		MsgBox(s)
	End Sub

او

	Function msg2(ByVal str As String, ByVal id As Integer, ByVal ParamArray a() As String) As String
		Dim s As String = "welcome " & str & "your ID :" & id
		For i As Integer = 0 To a.Length - 1
			s = s & " note " & i & "(" & a(i) & ")"
		Next
		Return s
	End Function

الان تستطيع ان ترسل بقدر ما تشاء من الوسطاء الى الاجراء او الدالة

ولكن نذكر بأمرين :

1. يجب ان تكون مصفوفة الوسطاء أخر وسيط يعرف في الاجراء او الدالة

2. لا يمكن تعريف اكثر من مصفوفة وسطاء في نفس الاجراء او الدالة

تم تعديل هذه المشاركة بواسطة alialalian في 6 يونيو 2009 في 01:41

#2

up

#3

مرحباً أخي الكريم،

مقال جميل لكنه ينقص تبين عمل التصريح ( ParamArray ), البعض يعتقد أن لا أهمية لهذا التصريح لكنه فعال وبشكل كبير, المثاليين التاليين يوضحان الفكرة :

Using A Simple Array Parameter :

 

[color= #000000; font-weight: bold;]Public Sub ShowNames[color= #009900;](Byval Names[color= #009900;]([color= #009900;]) [color= #b1b100;]As String[color= #009900;])

[color= #b1b100;]For [color= #990000;]Each Name [color= #b1b100;]As String In Names

MsgBox[color= #009900;]( Name [color= #009900;])

[color= #990000;]Next Name

[color= #990000;]End Sub

Usage :

 

Dim Names [color= #b1b100;]As String[color= #009900;]([color= #009900;]) [color= #339933;]= [color= #009900;]{[color= #0000ff;]"Arab"[color= #339933;], [color= #0000ff;]"Team"[color= #339933;], [color= #0000ff;]"2000"[color= #009900;]}

ShowNames[color= #009900;](Names [color= #009900;])

Using An Advanced Array Parameter

 

[color= #000000; font-weight: bold;]Public Sub ShowNames[color= #009900;](Byval ParamArray Names[color= #009900;]([color= #009900;]) [color= #b1b100;]As String[color= #009900;])

[color= #b1b100;]For [color= #990000;]Each Name [color= #b1b100;]As String In Names

MsgBox[color= #009900;]( Name [color= #009900;])

[color= #990000;]Next Name

[color= #990000;]End Sub

Usage :

 

ShowNames[color= #009900;]([color= #0000ff;]"Arab"[color= #339933;], [color= #0000ff;]"Team"[color= #339933;], [color= #0000ff;]"2000"[color= #009900;])

مشكور مرة أخرى, بالتوفيق :)

The important thing is not so much

that every child should be taught,

as that every child should be given the wish to learn.

#4

جزاك الله خيرا اخي بشار على اضافتك

ومشكور على التفاعل والتعاون

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…