عرض مشاركة واحدة
  #1  
قديم 24-05-2013, 10:18 AM
الصورة الرمزية hassanalhawy
hassanalhawy hassanalhawy غير متواجد حالياً
مــٌــعلــم
 
تاريخ التسجيل: Sep 2010
المشاركات: 1,514
معدل تقييم المستوى: 16
hassanalhawy is on a distinguished road
افتراضي

ممكن حضرتك تنظر لتلك المناقشات
اقتباس:
المشاركة الأصلية كتبت بواسطة 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
__________________
يخطئ من يظن أن للذئاب ديناً