مشاهدة النسخة كاملة : ما الفائدة من استخدام المحدد out في الاجرائية
abdelmalek
04-09-2010, 02:48 PM
السلام عليكم ورحمة الله وبركاته
ما الفائدة من استخدام المحدد out في الاجرائية ؟
وما الفرق بين المحدد out و var ؟
بارك الله فيكم وزادكم علما
في امان الله
بالتوفيق
أبو محمد اللحياني
04-09-2010, 04:16 PM
لعلك تقصد تمرير المتغيرات كبرامترات للتابع .
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
kachwahed
04-09-2010, 04:19 PM
وعليكم السلام ورحمة الله وبركاته
عندما تمرر COM Object من خلال تابع أو إجرائية استخدم التوجيه out لإلغاء القيمة الابتدائية لهذا الغرض ومستعملا هذا المتغير كمجرد حاوي للقيمة المرجعة
بخلاف التوجيه var الذي يأخذ بعين الاعتبار القيم الابتدائية (Initialize value)
مثال على السريع، لاحظ:
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 :)؟
abdelmalek
04-09-2010, 05:06 PM
بارك الله فيكم اخواني kachwahed و أبو محمد اللحياني وجزاكم الله خيرا
على حسب ما فهمت من المثال انه لا يمكن ادخال قيمة الى
testout(str);
بينما يمكن اخراجها
وبعد تحليل عمل هدا المحدد (out) فهمت منه مايلي :
procedure testout(out s: string);
begin
ShowMessage(s);
s := 'out param!';
end;
procedure TForm1.Button1Click(Sender: TObject);
var
str: string;
begin
str := 'initialize value';
testout(str);
ShowMessage(str);
end;
ان المتغير s لا يشير ولا ينسخ قيمة str فيه
بينما تنسخ قيمة s و توضع في str
هل هدا صحيح ام هناك تحليل اخر
بارك الله فيكم وزادكم علما
بالتوفيق
السلام عليكم
مثال توضيحي من هنا (http://www.delphibasics.co.uk/RTL.asp?Name=Out&ExpandCode1=Yes):
// 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;
بالتوفيق,,
vBulletin® , Copyright ©2008-2012