المشاركات : 201
المواضيع 60
:
: 0
الإنتساب : Oct 2009
[COLOR="Magenta"][COLOR="DarkOrchid"]السلام عليكم ورحمة الله وبركاته
ما الفائدة من استخدام المحدد out في الاجرائية ؟
وما الفرق بين المحدد out و var ؟
بارك الله فيكم وزادكم علما
في امان الله
بالتوفيق[/COLOR][/COLOR]
كن متواضعا ولا تكن متكبرا // الصبر + المثابرة = النجاح
المشاركات : 64
المواضيع 11
:
: 0
الإنتساب : Dec 2009
لعلك تقصد تمرير المتغيرات كبرامترات للتابع .
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
وإن تقدم ذو تقوى بصالحةٍ *** قدمتُ بين يديه عبرة الندمِ
المشاركات : 2,293
المواضيع 157
:
: 81
الإنتساب : Dec 2008
وعليكم السلام ورحمة الله وبركاته
عندما تمرر 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
؟
المشاركات : 201
المواضيع 60
:
: 0
الإنتساب : Oct 2009
بارك الله فيكم اخواني kachwahed و أبو محمد اللحياني وجزاكم الله خيرا
على حسب ما فهمت من المثال انه لا يمكن ادخال قيمة الى
بينما يمكن اخراجها
وبعد تحليل عمل هدا المحدد (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
هل هدا صحيح ام هناك تحليل اخر
بارك الله فيكم وزادكم علما
بالتوفيق
كن متواضعا ولا تكن متكبرا // الصبر + المثابرة = النجاح
المشاركات : 563
المواضيع 28
:
: 0
الإنتساب : Dec 2008
السلام عليكم
مثال توضيحي من
هنا:
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;
بالتوفيق,,