
24-05-2013, 10:18 AM
|
 |
مــٌــعلــم
|
|
تاريخ التسجيل: Sep 2010
المشاركات: 1,514
معدل تقييم المستوى: 16
|
|
ممكن حضرتك تنظر لتلك المناقشات
اقتباس:
المشاركة الأصلية كتبت بواسطة hass****hawy
أولاً بالنسبة للزر الأول قيمة tatal سوف تكون 256 وهذا الرقم تتقبله tatal لأنها من نوع short
ولكن عند تحويل تلك القيمة الراجعة من نوع بيان short إلى نوع بيان byte اللى هوا نوع بيان الدالة sum يصطدم التحويل بأعلى قيمة لمدى الـ byteوهو 255 فيعطى رسالة خطأ وقت التشغيل
ولكن السؤال هنا
إذا كان شرحى هذا صحيح
فلماذا لم يشر للخطأ للسطر return total ؟ ولكنه أشار للسطر السابق له وهو total = first + second
هذا غير مفهوم
عذراً أستاذ / سيف فأنا أسأل وأرد على نفسى
|
اقتباس:
المشاركة الأصلية كتبت بواسطة سيف سالم
اصبت الحقيقة
لماذا الرن تيم في هذا السطر
ولماذا نفذ في button2
البرنامج لم يصل بعد للقيمة الراجعة حتى يصدم بالنوع
|
اقتباس:
المشاركة الأصلية كتبت بواسطة سيف سالم
انت عارف
لو اردنا ان نفسر
لماذا الكمبيوتر لم يستطع تخصيص 256 في النوع short
هو نفس السبب
فسر
1+2=4
|
اقتباس:
المشاركة الأصلية كتبت بواسطة جعيصه
يبقى نوصل الى ان نوع القيمه الراجعه هى نفس نوع الداله برغم اختلاف نوع الاعلان
|
اقتباس:
المشاركة الأصلية كتبت بواسطة hass****hawy
هذا هو التفسير المنطقى لذلك
وحتى لو كتبنا الكود كما يلى سوف يعطى خطأ فى نفس السطر
function sum(byval first as byte, byval second as byte) as
dim total as short
total = first + second
total = total - 1
return total
end function
بالرغم من أن total أصبحت قيمتها فى المدى المسموخ لـ byte
|
اقتباس:
المشاركة الأصلية كتبت بواسطة hass****hawy
أنظر لهذا التعديل وستعجب له
function sum(byval first as short, byval second as short) as byte
dim total as short
total = first + second
return total
end function
private sub button1_click(byval sender as system.object, byval e as system.eventargs) handles button1.click
msgbox(sum(255, 1))
end sub
ستجد أن الخطأ ظهر فى سطر return total
|
اقتباس:
المشاركة الأصلية كتبت بواسطة hass****hawy
أنظر لهذا التعديل وستعجب له
function sum(byval first as string, byval second as string) as byte
dim total as string
total = first + second
return total
end function
private sub button1_click(byval sender as system.object, byval e as system.eventargs) handles button1.click
msgbox(sum("255", "1"))
end sub
ستجد أن الخطأ ظهر فى سطر return total
|
اقتباس:
المشاركة الأصلية كتبت بواسطة hass****hawy
الغريب أن نوع بيان المعاملات first و second يؤثر فى مكان حدوث الخطأ
فعندما يكون نوع بيان المعاملات first و second نفس نوع بيان الدالة وهو byte يحدث الخطأ عند الأمر total = first + second
و عندما يكون نوع بيان المعاملات first و second نفس نوع بيان القيمة الراجعة total وهو مثلاً short يحدث الخطأ عند الأمر return total
|
__________________
يخطئ من يظن أن للذئاب ديناً
|