![]() |
|
هل ممكن للبروسيدر ان يرجع قيمه - نسخة قابلة للطباعة +- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum) +-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3) +--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15) +--- الموضوع : هل ممكن للبروسيدر ان يرجع قيمه (/showthread.php?tid=5500) |
هل ممكن للبروسيدر ان يرجع قيمه - noor - 31-08-2013 السلام عليكم كما اعرف ان الفونكشن يرجع لنا قيمه عكس البروسيدر لاكني سمعت من الممكن للبروسيدر ان يرجع قيمه ممكن احد يعطيني مثال صغير استطيع فعل هذا بلفونكشن لاكن هدفي التعلم هل ممكن للبروسيدر ان يرجع قيمه - SMP3 - 31-08-2013 مبدءيا يمكن القول أنه من المستحيل على Procedure أن يرجع أي قيمة . لكن يمكن أن يفعل في حال تم استخدام الأسمبلي أو طرق ملتوية : مثال على السريع : PHP كود : procedure Sum(a,b:integer);مثال ثاني : PHP كود : procedure Sum(a, b: integer);هل ممكن للبروسيدر ان يرجع قيمه - Coldzer0 - 31-08-2013 او ممكن كالتالى PHP كود : program Project1;هل ممكن للبروسيدر ان يرجع قيمه - S.FATEH - 31-08-2013 السلام عليكم لا لا يمكن للـ procedure ان يعيد قيمة بنفس مفهوم function لكن يمكن ان تغير مباشرة في متغيرات البرامترات الممررة اذا تم تمريرها بالمرجع ما هو التمرير بالمرجع و ما هو التمرير بالقيم بداية قم بتعريف التالي PHP كود : privateلنلاحظ المثال التالي: PHP كود : procedure TForm1.FormCreate(Sender: TObject);قمنا باعطاء قيم للمتغير s عند بداية التشغيل سنقوم بتمرير المتغير الى اجرائين مختلفين الاول نمرر فيه المتغير بالقيمة و الثاني نمرر المتغير بالمرجع ثم نقوم باجراء بعض العمليات التغييرات على المتغير s لنلاحظ كيف بتأثر المتغير الاصلي PHP كود : procedure TForm1.Button1Click(Sender: TObject);PHP كود : procedure TForm1.DoSomthingWithS(s: string);هنا قمنا باسناد قيمة جديدة للمتغير s المفروض ShowMessage ستضهر لنا 'Pass by value' لكن الذي يضهر هو 'Delphi4Arab' هذا لاننا قمنا باستخدام التمرير بالقيمة الـ procedure سيقوم بانشاء نسخة من المتغير المرر لذلك مهما قمت باجراء التغييرات لن يتأثر المتغير الاصلي PHP كود : procedure TForm1.DoSomthingToS(var s: string);هنا استخدمنا التمرير بالمرجع اي ان التغيرات التي تحدثها في المتغير يتم عكسها على المتغير الاصلي للتمرير بالمرجع يكفي ان تضيف var قبل المتغير مثال من الدلفي الـ procedure الحذف Delete يستخدم التمرير بالمرجع PHP كود : procedure TForm1.Button1Click(Sender: TObject);هل ممكن للبروسيدر ان يرجع قيمه - Agmcz - 31-08-2013 السلام عليكم إجابة s.fateh كافية هل ممكن للبروسيدر ان يرجع قيمه - SMP3 - 31-08-2013 يجدر الذكر أن ال Object تستخدم التمرير بالمرجع (لا وجود للتمرير بالقيمة) PHP كود : typeهل ممكن للبروسيدر ان يرجع قيمه - S.FATEH - 31-08-2013 SMP3 نعم معك حق حتى لو استخدمت var فان التمرير يبقى بالمرجع و هو الاستثاء الذي نسيت ذكرة |