هل ممكن للبروسيدر ان يرجع قيمه
#4
السلام عليكم

لا لا يمكن للـ procedure ان يعيد قيمة بنفس مفهوم function
لكن يمكن ان تغير مباشرة في متغيرات البرامترات الممررة اذا تم تمريرها بالمرجع
ما هو التمرير بالمرجع و ما هو التمرير بالقيم
بداية قم بتعريف التالي
PHP كود :
private
    
s: string;
    
procedure DoSomthingWithS(s: string);
    
procedure DoSomthingToS(var s: string); 

لنلاحظ المثال التالي:
PHP كود :
procedure TForm1.FormCreate(Sender: TObject);
begin
  s 
:= 'Delphi4Arab';
end; 

قمنا باعطاء قيم للمتغير s عند بداية التشغيل سنقوم بتمرير المتغير الى اجرائين مختلفين الاول نمرر فيه المتغير بالقيمة و الثاني نمرر المتغير بالمرجع ثم نقوم باجراء بعض العمليات التغييرات على المتغير s لنلاحظ كيف بتأثر المتغير الاصلي
PHP كود :
procedure TForm1.Button1Click(Sender: TObject);
begin
  DoSomthingWithS
(s); // pass by value
  
ShowMessage(s);
  
DoSomthingToS(s); // pass by reference
  
ShowMessage(s);
end; 

PHP كود :
procedure TForm1.DoSomthingWithS(s: string);
begin
  s 
:= 'Pass by value';
end; 

هنا قمنا باسناد قيمة جديدة للمتغير s المفروض ShowMessage ستضهر لنا 'Pass by value' لكن
الذي يضهر هو 'Delphi4Arab' هذا لاننا قمنا باستخدام التمرير بالقيمة الـ procedure سيقوم بانشاء نسخة من المتغير المرر لذلك مهما قمت باجراء التغييرات لن يتأثر المتغير الاصلي
PHP كود :
procedure TForm1.DoSomthingToS(var s: string);
begin
  s 
:= 'Pass by reference';
end; 

هنا استخدمنا التمرير بالمرجع اي ان التغيرات التي تحدثها في المتغير يتم عكسها على المتغير الاصلي للتمرير بالمرجع يكفي ان تضيف var قبل المتغير

مثال من الدلفي الـ procedure الحذف Delete يستخدم التمرير بالمرجع
PHP كود :
procedure TForm1.Button1Click(Sender: TObject);
var
  
s: string;
begin
  s
:= 'Delphi4Arab';
  
Delete(s, 1, 4);
  
ShowMessage(s);
end; 
بارك الله فيك على السآل هذه الاسئلة هي التي تجعل منا نتعلم و نتقدم
و لرب نازلة يضيق لها الفتى ذرعا و عند الله منها المخرج
ضاقت فلما استحكمت حلقاتها فرجت و كنت اضنها لا تفرج
الرد


الردود في هذا الموضوع
هل ممكن للبروسيدر ان يرجع قيمه - بواسطة S.FATEH - 31-08-2013, 12:07 PM

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم