سلام
دوتا راه الان به ذهنم میرسه :
1. از overload کردن توابع استفاده نمایید . البته باید یجورایی تابع رو سازماندهی کنید اگر نوع مقادیر یکی باشند :
function test(Name: string = 'All'; Famil: string = 'All';
Password: string = 'NoSet'): string; overload;
function test(Name: string = 'All'; Password: string = 'NoSet'): string; overload;
function test(Name: string = 'All'): string; overload;
...
function test(Name: string = 'All'; Famil: string = 'All';
Password: string = 'NoSet'): string;
begin
Result:= Name + ' . ' + Famil + ' . ' + Password;
end;
function test(Name: string = 'All'; Password: string = 'NoSet'): string;
begin
Result:= Name + ' . ' + 'All' + ' . ' + Password;
end;
function test(Name: string = 'All'): string;
begin
Result:= Name + ' . ' + 'All' + ' . ' + 'NoSet';
end;
و یا یه نوع جدید بسازید :
type
TMyName =string;
TMyFamil =string;
TMyPass =string;
function test(Name: TMyName = 'All'; Famil: TMyFamil = 'All';
Password: TMyPass = 'NoSet'): string; overload;
function test(Name: TMyName = 'All'; Famil: TMyFamil = 'All'): string; overload;
function test(Name: TMyName = 'All'): string; overload;
...
function test(Name: TMyName = 'All'; Famil: TMyFamil = 'All';
Password: TMyPass = 'NoSet'): string;
begin
Result:= Name + ' . ' + Famil + ' . ' + Password;
end;
function test(Name: TMyName = 'All'; Famil: TMyFamil = 'All'): string;
begin
Result:= Name + ' . ' + Famil + ' . ' + 'NoSet';
end;
function test(Name: TMyName = 'All'): string;
begin
Result:= Name + ' . ' + 'All' + ' . ' + 'NoSet';
end;
2. ویا میتونید پیشفرض ها رو بصورت عمومی تعریف کنید و هرجای خالی رو با اون پر کنید :
const
DEF_NAME = 'All';
DEF_FAMIL = 'All';
DEF_PASS = 'NoSet';
function test(Name: string = DEF_NAME; Famil: string = DEF_FAMIL;
Password: string = DEF_PASS): string;
...
function test(Name: string = DEF_NAME; Famil: string = DEF_FAMIL;
Password: string = DEF_PASS): string;
begin
Result:= Name + ' . ' + Famil + ' . ' + Password;
end;
// مثال :
procedure TForm1.btn1Click(Sender: TObject);
begin
btn1.Caption:= test('Mohsen', DEF_FAMIL, '122');
end;
موفق باشید