منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : سؤال حول الFunction
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
السلام عليكم
كما تعلمون فإن الدالة Function تقوم بإرجاع قيمة محددة /واحدة/ بعد حسابها
انا اريد ان تعطيني قيمتين Confused
مثلا انا لدي
Select Case A
Case 0.283 : N = 1 : D = 6
Case 0.565 : N = 2 : D = 6
Case 0.848 : N = 3 : D = 6
End Select
انا اريد ان يدخل البرنامج في هذا الFunction ويعطيني قيمة N و D معا
ويعود لل Sub الاساسي مع هذه القيمتين
كيف يمكن ان اجعلها تعطيني قيمتين معا ؟!!Huh
او هل هنالك دالة اخرى يمكنها عمل ذلك
وشكراً Smile
السلام عليكم...

يمكنك استعمال روتين (Sub) مع تمرير البارامترات التي تريد إرجاع قيم فيها بالمرجع (Pass by reference) و ذلك باستعمال الكلمة المحجوزة ByRef مع اسم البارامتر. مثلاً يمكن أن يكون تعريف الإجراء كالتالي:

كود :
Public Sub MyProcedure(ByVal A As Single, ByRef N As Integer, ByRef D As Integer)
    ' ...
    ' ...
    ' ...
End Sub

و عند استدعائه تقوم بتعريف متغيرين من نوع البارامترين (Integer في هذا المثال) لتمريرهما إلى الإجراء لاستقبال البيانات:

كود :
Dim X, Y As Integer

MyProcedure(0.565, X, Y)

لاحظ أن المتغير X سيأخذ قيمة N من داخل الإجراء، و المتغير Y سيأخذ قيمة D من داخل الإجراء.

نرجو الاستفادة و السلام.
شكرا كتير والله يوفقكBlush

ممدوح الخطيب

السلام عليكم ورحمة الله وبركاتة
ممكن عمل المطلوب في حالة جعل القيم العائدة من الفانكشن مصفوفة
مثال
كود :
Public Function MyProcedure(ByVal A As Single) As String()
        Dim arry(1) As String
        arry(0) = "D"
        arry(1) = "N"
        Return arry
    End Function

وتطبيق الدالة كالتالي
كود :
Dim a(1) As String
        a = MyProcedure(0.255)
        For i As Integer = 0 To a.Length - 1
            MsgBox(a(i))
        Next
بالتوفيق