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

ما الخطأ فى هذا الكوود البسيط

مغلق
بدأه OLE في 18 يناير 2006 · 9 رد · 775 مشاهدة · في لغة Ms Visual Basic 6 وما قبلها من إصدارات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم و رحمه الله و بركاته

اخوانى هل بالأمكان أن اطلب مساعدتكم ؟

كود بسيط جدا و لكنه مع ذلك بيعمل خطأ

و أتفضلو الكود أهو

Private Sub cmdgrade_Click()
Text6.Text = Val(Text1.Text) + Val(Text2.Text) + Val(Text3.Text) + Val(Text4.Text) + Val(Text5.Text)
If Val(Text6.Text) <= 50 Then Label5.Caption = " da3eef "
Label5.BackColor = vbRed
ElseIf Val(Text6.Text) <= 65 Then Label5.Caption = " ma2bool "
Label5.BackColor = vbBlue
ElseIf Val(Text6.Text) <= 75 Then Label5.Caption = " gayed "
Label5.BackColor = vbYellow
ElseIf Val(Text6.Text) <= 85 Then Label5.Caption = " gayed gedan "
Label5.BackColor = vbBlack
ElseIf Val(Text6.Text) <= 100 Then Label5.Caption = "Emteyaz "
Label5.BackColor = vbCyan
End If
End Sub

و بتطلعلى رسالة خطا بتقول else without if compiler erorr

رغم ان دكتور المادة قالهالنا كدة

ارجوكم ساعدونى يا اخوتى فى الله و أكون من الشاكرين

البروجكت دة هيتسلم يوم السبت المقبل و عليه درجات كمان :(

ملاحظة : مرفق مع الموضوع ملف المشروع لتتاكدو بنفسكم

bayan.zip

#2

حياك الله اخي OLE ..

العبارة الشرطية IF عندما تتبعها اكثر من جملة تعتمد عليها .. تحتاج ان تكتب الجمل التابعة لها في اسطر منفصله عنها .. الخطأ عندك انك اضفت جملة في نفس سطر IF بينما لديك اكثر من جملة تعتمد على شرط IF (لخبطك اكثر ... صح :wacko: ) .. عموماً البرنامج مرفق مصحح :)

بنت اليمن ،،

bayan.rar

لا اله الا الله .. محمد رسول الله

(* ربِ اجعلني مقيم الصلاة و من ذريتي ، ربنا و تقبل دعـاء *)

يا حيّ يا قيـوم ... برحمتك استغيث ... اصلح لي شأني كله و لا تكلني الى نفسي طرفة عين

#3

السلام عليكم ....

أختى العزيزة بنت اليمن ، بارك الله فيكى

اشكرك من كل قلبى على افادتك الكبيرة و أعزرى جهلى ( اصلى لسة بادئ فى دراسة الفيجوال باسيك من اسبوعين بس )

بس بجد ما شاء الله عليكى و ازادك من علمه ، معلومة جديدة بالنسبة اليا (F) :(

و على فكرة انا شفت لحضرتك ملف pps عن كيفية ربط قواعد البيانات بالفيجوال باسيك

فعلا شئ أكثر من رائع ، أحب أحييكى عليه

خالص تحياتى لشخصكم الكريم و شكرا لأنقاذى (F)(F)(F)

#4

مشكورة الأخت بنت اليمن على التصحيح لكني احببت ان اوضح لك قاعدة If طالما انك لازلت بادئ فى دراسة الفيجوال :

اخي العزيز :

اللـ If تعتبر من الأوامر التي تندرج تحت اسم اوامر اتخاذ القرار وهذه الأوامر مثل For , If , While , Select Case , iif

هذه الأوامر تم تسميتها بهذا الشكل لأنها تتخذ قرار مبني على شرط لنأخذ الشرط IF .

هناك صيخ نحوية تسمي بالعربي أو قواعد يجب عليك ان تعرفها حتى تتكمن من استخدام الـ IF

هذه الصيغ على النحو التالي :

بمعني انه يمكنني ان اختار احد هذه الصيغ يعني اكتب بإي من هذه الصيغ قاعدة If

القاعدة الأولى :

IF Condition Then Statment

تعتبر الكلمات If و Then كلمات محجوزة يعني يجب عليك ذكرها .

الـ Condition هوا الشرط الذي اذا تحقق سينفذ البرنامج الجملة بعد كلمة Then

لنأخذ مثال :

IF Name = "Ali" Then MsgBox "OK"
MsgBox  "Hi"

المثال السابق يتحقق من كون المتغير المسى Name يحتوى على قيمة هذه القيمة هي Ali فأن كان هذا الكلام صحيح اي قيمة المتغير تساوي Ali سيقوم مفسر اللغة بتنفيذ جملة واحدة فقط وهي ما بعد كلمة Then وفي حالتنا هذه سينفذ كود إضهار Msgbox فيها كلمة OK. بعد ذلك سوف سوف يتنقل المفسر ايضا لينفذ السطر التالي بعد IF وهوا "MsgBox "Hi .

بمعنى :

الصيغه المذكور تستخدم متى : عندما يكون لديك شرط إذا تحقق ينفذ جواب شرط واحد فقط . وبذلك فهذه الصيغة تعتبر صيغة سطرية أي الشرط وجواب الشرط يجب ان يكون في سطر واحد. إذا لم يتحقق لن ينفذ الجملة بعد then وهي جواب واحد للشرط يعني لن تضهر رسالة Ok وتنتهي القاعدة IF عند هذا السطر بعد ذلك السطر التالي لا يعتبر تابع للـ IF

الصيغة الثانية :

وهي صيغة تستخدم في حال كنت تريد أن تتأكد من شرط فإن تحقق هذا الشرط ينفذ جملة ما أو عبارة ما وإن لم ينفذ جملة أخرى .

الصيغة على النحو التالي :

IF condition Then Statmen1 Else Statment2

هنا في الصيغة ضهرت الكلمة المحجوزة Else وهي تخبر المفسر التابع للغة بإن يتم تنفيذ الجملة Stement2 في حال لم يتحقق الشرط .

IF Name = "Ali" Then Msgbox "Yes" Else MsgBox "No"

هذه الصيغة تعتبر ايضا سطرية بمعني انها تكتب في سطر واحد وهي تحتوي على جملتين أو جوابين شرط هما Stetment1 و Stetmen2 لنرى كيف تعمل هذه الصيغة . يتم فحص الشرط أولاً والشرط لدينا ان المتغير Name يحتوى على قيمة Ali فأن كان هذا الطكلام صحيح قم بتنفيذ الـ Stetmen1 ثم بعد ذلك انتقل للسطر التالي . أي أنه لن ينفذ الجملة Stetment2 ليش لأن ما بعد Else ينفذ في حال لم تنفذ الجملة Stetment1 أي ما بعد Then , بمعنى أن Else تنفذ في حال كان الشرط غير صحيح .

الصيغة الثالثة :

الصيغتين السابقتين كنا نستخدم جواب شرط واحد أو جملة واحدة لكن لو كان لدي اكثر من جملة مثلا لو تحقق الشرط قم بتنفيذ عمليتين الأولي إضهار رسالة بنعم والثانية مثة إضهار الإسم على شريط عنوان النافذة . في هذه الحالة لن استخدم الصيغ السابقة ليش لأنهن فقط ينفذ جواب شرط واحد أي عملية واحدة لذلك تم وضع الصيغة التالية :

IF condition  Then 
     Statment1
     Statment2
     Statment3
    .................
End If

في هذه الصيغة ضهرة الكلمة End If وهي تخبر المترجمع أو مفسر اللغة أنه وصل إلى نهاية جمل جواب الشرط . هذه الصغة مقاربة للصيغة الأولى فيما عدا أنها تنفذ أكثر من جواب شرط .

الصيغة الرابعة :

وهي نفس الصيغة الثانية فيما عدا انها اتستخدم في حال تحقق الشرط ينفذ أكثر من جملة وإن لم ينفذ أكثر من جملة كما في الصيغة التالية :

IF condition  Then 
     Statment1
     Statment2
     Statment3
    .................
Else
     Statment1
     Statment2
     Statment3
    .................
End If

بقي الأخيرة وهي الصيغة الخامسة لها الصيغة التالية :

IF condition  Then 
     Statment1
     Statment2
     Statment3
    .................
ElseIF condition2 Then
     Statment1
     Statment2
     Statment3
    .................
Else
     Statment1
     Statment2
     Statment3
    .................
End If

وهي تستخدم في حال كان لدي شرطين الأول أن يكون اسم الطالب هوا Ali فإن كان كذلك نفذ الـ Stetments وإن لم يكم إذا كان Sami نفذ الجمل التالية وإن لم يكن لا Ali ولا سامي نفذ الـ Else الأخيرة .

هذا بشكل مختصر اتمنا ان اكون فدك نوعا ما وعذرني عن اسلوب الشرح فقد كتبته دون مباشرة .

تم تعديل هذه المشاركة بواسطة فواز الشمري في 18 يناير 2006 في 13:44

#5

يا الف هلا و مرحبا بالزميل العزيز ، كيف الاحوال ، ان شاء الله بخير ؟

يا رب دايما

على فكرة يا باشا

IF Name = "Ali" Then Msgbox "Yes" Else MsgBox "No"

هذه الصيغة تعتبر ايضا سطرية بمعني انها تكتب في سطر واحد وهي تحتوي على جملتين أو جوابين شرط هما Stetment1 و Stetmen2 لنرى كيف تعمل هذه الصيغة . يتم فحص الشرط أولاً والشرط لدينا ان المتغير Name يحتوى على قيمة Ali فأن كان هذا الطكلام صحيح قم بتنفيذ الـ Stetmen1 ثم بعد ذلك انتقل للسطر التالي . أي أنه لن ينفذ الجملة Stetment2 ليش لأن ما بعد Else ينفذ في حال لم تنفذ الجملة Stetment1 أي ما بعد Then , بمعنى أن Else تنفذ في حال كان الشرط غير صحيح .

طريقة كتابة الكوود بهذة الطريقة جديدة تماما عليا ، و اشكرك عليها كـــــــــــــــــــــتــــــــــــــــــــــــــــــــــــــــــــــيـــــــــــــــــــــــــــــــــر

على فكرة انا فى سنة أولى فى نفس تخصص حضرتك ، الترم اللى فات درسنا مقدمة فى الحاسب و التفكير المنطقى و حل المشاكل باأستخدام الحاسب و مقدمة فى نظم التشغيل :D

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

شكرا ليك يا باشا و اتمنى فى يوم انى اصبح فى خبرة حضراتكم و كل الأساتذة الموجودين

تقبل خالص تحياتى و شكرا جدا لأهتمامك و مرورك و ردك الكريم

\ أبراهيم \ هندسة حاسبات و معلومات \ الأسكندرية .... مصر ( الفرقة الاولى )

#6

ملحوظة سريعة حول كودك الذي طرحته في مشاركتك الاولى فبما انك تريد ان تحقق من محتوى متغير واحد فقط عدة مرات فالأفضل استعمال ال Select Case لأنها أسهل و تعطيك كود أسهل في القراءة و المتابعة

و السلام عليكم

#7

شكرا لك اخى الكريم و لكنى مبتدأ فى الفيجوال باسيك ولا اعرف كيفية كتابة هذا الكود

تقبل تحياتى العطرة

#8

اوكي ما في مشكل

لنعتبر ان MyColor هو متغير يأخذ في كل مرة لون و نحن نريد ان نفحص اللون الذي فيه و على حسب اللون ينفذ الكود بكل بساطة و عن طريق ال Select Case سنقوم بكتابة الكود التالي :

Select Case MyColor
Case "Red"
Msgbox "This Is Red"
Case "Green"
Msgbox "This Is Green"
Case "Blue"
Msgbox "This Is Blue"
Case "Black"
Msgbox "This Is Black"
...
...
...
...
End Select

و هذا كل ما في الأمر :)

#9

مشكور اخى العزيز بس كان فى سؤال ، لو حبيت اضع حالى اختيار من عندى

مثلا لو حابب أعمل زر امر Command Button و اضع مثلا فيه الأمر التالى

case = black

أو شئ مثل هذا ، كيف يتم كتاب الكوود ؟

تقبل خالص تحياتى و شكرى على ردودك و مساعداتك

#10

أوضح سؤالك أخي العزيز فلا تستطيع إستخدام Case كمتغير لأنها كلمة محجوزة في المترجم

هذا الموضوع مغلق.

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