من می خواهم یه پروسیجر داشته باشم که آخرین پارامتر را اگه لازم بود به اون ارسال کنم
ظاهرا باید بشه از optional هستفاده کرد ولی ایراد می گیره. لطفا راهنمایی کنین.:گیج:
Printable View
من می خواهم یه پروسیجر داشته باشم که آخرین پارامتر را اگه لازم بود به اون ارسال کنم
ظاهرا باید بشه از optional هستفاده کرد ولی ایراد می گیره. لطفا راهنمایی کنین.:گیج:
Overload را جستجو کنید...
در زیر براتون یک نمونه کد نوشتم .
تابع :
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');
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);
چطوری میشه تابعی مثل تابع Write ساخت؟ منظورم پارامتر هاشه.
Write یک تابع معمولی پاسکال نیست، بلکه یکی از توابع magic کامپایلر هست؛ یعنی در پاسکال شما نمی تونید تابعی عینا مثل Write بنویسید، ولی کامپایلر این تابع را به این شکل خاص برای شما پیاده سازی کرده.نقل قول:
چطوری میشه تابعی مثل تابع Write ساخت؟
اینو میدونم.نقل قول:
یعنی در پاسکال شما نمی تونید تابعی عینا مثل Write بنویسید، ولی کامپایلر این تابع را به این شکل خاص برای شما پیاده سازی کرده.
در ضمن چرا به اینصورت تعریفش کردن؟ منظورم اینه که چرا به صورت تابع معمولی تعریف نکردن؟
توضیح دادم؛ برای اینکه همچین حالتی در پاسکال ممکن نبود.نقل قول:
منظورم اینه که چرا به صورت تابع معمولی تعریف نکردن؟
آخه من نمیتونم درک کنم! مگه به اسمبلی تبدیل نمیشه؟ پس میشد پیاده سازی کرد.نقل قول:
توضیح دادم؛ برای اینکه همچین حالتی در پاسکال ممکن نبود.
اینها چه ربطی به هم دارند؟!نقل قول:
آخه من نمیتونم درک کنم! مگه به اسمبلی تبدیل نمیشه؟ پس میشد پیاده سازی کرد.