// Optional Parameters Using a Record
program OptionalParamRecord;
{$mode objfpc}
type
TGreetOptions = record
Name: string;
Shout: boolean;
end;
procedure Greet(opts: TGreetOptions);
var
finalName: string;
begin
if opts.Name = '' then
finalName := 'Guest'
else
finalName := opts.Name;
writeln('Hello, ', finalName, '!');
end;
var
opts: TGreetOptions;
begin
opts.Name := '';
opts.Shout := false;
Greet(opts);
opts.Name := 'Solar';
Greet(opts);
opts.Name := 'Alpha';
opts.Shout := true;
Greet(opts);
end.
(*
run:
Hello, Guest!
Hello, Solar!
Hello, Alpha!
*)