delphi4arab منتديات دلفي للعرب
ما الفائدة من استخدام المحدد out في الاجرائية - نسخة قابلة للطباعة

+- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum)
+-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3)
+--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15)
+--- الموضوع : ما الفائدة من استخدام المحدد out في الاجرائية (/showthread.php?tid=2376)



ما الفائدة من استخدام المحدد out في الاجرائية - abdelmalek - 04-09-2010

[COLOR="Magenta"][COLOR="DarkOrchid"]السلام عليكم ورحمة الله وبركاته
ما الفائدة من استخدام المحدد out في الاجرائية ؟
وما الفرق بين المحدد out و var ؟

بارك الله فيكم وزادكم علما
في امان الله
بالتوفيق[/COLOR][/COLOR]


ما الفائدة من استخدام المحدد out في الاجرائية - أبو محمد اللحياني - 04-09-2010

لعلك تقصد تمرير المتغيرات كبرامترات للتابع .

var عكس const

var : تمرير المتغير بالمرجع ، يعني يحق للتابع الكتابة على قيمته أي أن قيمته خارج التابع ستتغير.

أما const فهي تمرير بالقيمة تعني أن القيمة في البرامترات ثابت لا يتغير.

http://www.delphibasics.co.uk/RTL.asp?Name=Var&ExpandCode1=Yes


أما بالنسبة لـ Out فيه تستخخدم عند التعامل مع عناصر ActiveX
http://www.delphibasics.co.uk/RTL.asp?Name=Out

وليس لي الخبرة في الخوض في مجاهيل COM


ما الفائدة من استخدام المحدد out في الاجرائية - kachwahed - 04-09-2010

وعليكم السلام ورحمة الله وبركاته
عندما تمرر COM Object من خلال تابع أو إجرائية استخدم التوجيه out لإلغاء القيمة الابتدائية لهذا الغرض ومستعملا هذا المتغير كمجرد حاوي للقيمة المرجعة
بخلاف التوجيه var الذي يأخذ بعين الاعتبار القيم الابتدائية (Initialize value)

مثال على السريع، لاحظ:
PHP كود :
procedure testout(out s: string);
begin
  ShowMessage
(s);
  
s := 'out param!';
end;

procedure testvar(var v: string);
begin
  ShowMessage
(v);
  
v := 'var param!';
end;

procedure TForm1.FormCreate(Sender: TObject);
var
  
str: string;
begin
  str 
:= 'initialize value';
  
testout(str);
  
ShowMessage(str);

  
str := 'initialize value';
  
testvar(str);
  
ShowMessage(str);
end; 
التمرير بـ out يستخدم عادة مع COM Object و Interface...

سؤال: هل بحثت في الـ Help Smile؟



ما الفائدة من استخدام المحدد out في الاجرائية - abdelmalek - 04-09-2010

بارك الله فيكم اخواني kachwahed و أبو محمد اللحياني وجزاكم الله خيرا

على حسب ما فهمت من المثال انه لا يمكن ادخال قيمة الى

PHP كود :
testout(str); 

بينما يمكن اخراجها

وبعد تحليل عمل هدا المحدد (out) فهمت منه مايلي :

PHP كود :
procedure testout(out s: string);
begin
  ShowMessage
(s);
  
s := 'out param!';
end; 

PHP كود :
procedure TForm1.Button1Click(Sender: TObject);
 var
  
str: string;
begin
  str 
:= 'initialize value';
  
testout(str);
  
ShowMessage(str);
end; 

ان المتغير s لا يشير ولا ينسخ قيمة str فيه

بينما تنسخ قيمة s و توضع في str

هل هدا صحيح ام هناك تحليل اخر

بارك الله فيكم وزادكم علما

بالتوفيق


ما الفائدة من استخدام المحدد out في الاجرائية - TF6M - 04-09-2010

السلام عليكم
مثال توضيحي من هنا:
PHP كود :
// Simple routine illustrating 3 types of parameter handling
// value1 : Input value only
// value2 : Output value only
// value3 : Input and output value
 
procedure TForm1.ThreeParms(    value1: Integer;
                            
Out value2: Integer;
                            var 
value3: Integer);
 
begin
  
// Add value1 to value 3 as the value2 output
  
value2 := value1 + value3;
 
  
// Multiply value1 by value3 to give value3 output
  
value3 := value1 * value3;
 
end; 
بالتوفيق,,