PDA

View Full Version : پارامتر اختیاری؟!



mbshareat
چهارشنبه 19 خرداد 1389, 11:43 صبح
من می خواهم یه پروسیجر داشته باشم که آخرین پارامتر را اگه لازم بود به اون ارسال کنم
ظاهرا باید بشه از optional هستفاده کرد ولی ایراد می گیره. لطفا راهنمایی کنین.:گیج:

حسین شهریاری
چهارشنبه 19 خرداد 1389, 11:53 صبح
Overload را جستجو کنید...

Felony
چهارشنبه 19 خرداد 1389, 12:48 عصر
در زیر براتون یک نمونه کد نوشتم .

تابع :

Procedure SampleFunc(Title: string;Text: string='');
begin
if Text='' then
ShowMessage(Title)
else
MessageBox(0, PChar(Text), PChar(Title),+MB_OK);
end;

نمونه به کار برده شده :

SampleFunc('Message');
SampleFunc('Message','This is sample optional parameter');

Felony
چهارشنبه 19 خرداد 1389, 14:38 عصر
Overload را جستجو کنید...
Overload برای تغییر نوع یا تعداد پارامتر ها به کار میره ، مثلا :

procedure Test(SampleParam: string);Overload;
begin
ShowMessage(SampleParam);
end;

procedure Test(SampleParam: Integer);Overload;
begin
ShowMessage(IntToStr(SampleParam));
end;

استفاده :

Test('1389');
Test(1389);

1485159
چهارشنبه 19 خرداد 1389, 14:43 عصر
چطوری میشه تابعی مثل تابع Write ساخت؟ منظورم پارامتر هاشه.

vcldeveloper
چهارشنبه 19 خرداد 1389, 16:14 عصر
چطوری میشه تابعی مثل تابع Write ساخت؟
Write یک تابع معمولی پاسکال نیست، بلکه یکی از توابع magic کامپایلر هست؛ یعنی در پاسکال شما نمی تونید تابعی عینا مثل Write بنویسید، ولی کامپایلر این تابع را به این شکل خاص برای شما پیاده سازی کرده.

1485159
چهارشنبه 19 خرداد 1389, 16:23 عصر
یعنی در پاسکال شما نمی تونید تابعی عینا مثل Write بنویسید، ولی کامپایلر این تابع را به این شکل خاص برای شما پیاده سازی کرده.
اینو میدونم.
در ضمن چرا به اینصورت تعریفش کردن؟ منظورم اینه که چرا به صورت تابع معمولی تعریف نکردن؟

vcldeveloper
چهارشنبه 19 خرداد 1389, 17:19 عصر
منظورم اینه که چرا به صورت تابع معمولی تعریف نکردن؟
توضیح دادم؛ برای اینکه همچین حالتی در پاسکال ممکن نبود.

1485159
چهارشنبه 19 خرداد 1389, 17:27 عصر
توضیح دادم؛ برای اینکه همچین حالتی در پاسکال ممکن نبود.
آخه من نمیتونم درک کنم! مگه به اسمبلی تبدیل نمیشه؟ پس میشد پیاده سازی کرد.

vcldeveloper
چهارشنبه 19 خرداد 1389, 17:49 عصر
آخه من نمیتونم درک کنم! مگه به اسمبلی تبدیل نمیشه؟ پس میشد پیاده سازی کرد.
اینها چه ربطی به هم دارند؟!