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

بارك الله فيكم وزادكم علما
في امان الله
بالتوفيق[/COLOR][/COLOR]
كن متواضعا ولا تكن متكبرا // الصبر + المثابرة = النجاح
الرد
#2
لعلك تقصد تمرير المتغيرات كبرامترات للتابع .

var عكس const

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

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

http://www.delphibasics.co.uk/RTL.asp?Na...dCode1=Yes


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

وليس لي الخبرة في الخوض في مجاهيل COM
وإن تقدم ذو تقوى بصالحةٍ *** قدمتُ بين يديه عبرة الندمِ
الرد
#3
وعليكم السلام ورحمة الله وبركاته
عندما تمرر 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؟
الرد
#4
بارك الله فيكم اخواني 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

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

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

بالتوفيق
كن متواضعا ولا تكن متكبرا // الصبر + المثابرة = النجاح
الرد
#5
السلام عليكم
مثال توضيحي من هنا:
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; 
بالتوفيق,,
I'M Fly Like A G6

الرد


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


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