How to create a function with an optional parameter in Pascal

4 Answers

0 votes
// Default Parameter Value

program OptionalParamDefault;

{$mode objfpc}

procedure Greet(name: string = 'Guest');
begin
  writeln('Hello, ', name, '!');
end;

begin
  Greet('Solar');
  Greet;         
end.


(*
run:

Hello, Solar!
Hello, Guest!

*)

 



answered 2 hours ago by avibootz
0 votes
// Optional Parameter Using nil

program OptionalParamNil;

{$mode objfpc}

procedure Greet(name: PChar);
begin
  if name = nil then
    writeln('Hello, Guest!')
  else
    writeln('Hello, ', name, '!');
end;

begin
  Greet('Solar');   
  Greet(nil);
end.



(*
run:

Hello, Solar!
Hello, Guest!

*)

 



answered 2 hours ago by avibootz
0 votes
// Optional Parameters Using Overloaded Functions

program OptionalParamOverload;

{$mode objfpc}

procedure Greet;
begin
  writeln('Hello, Guest!');
end;

procedure Greet(name: string);
begin
  writeln('Hello, ', name, '!');
end;

begin
  Greet;          
  Greet('Solar');  
end.



(*
run:

Hello, Solar!
Hello, Guest!

*)

 



answered 2 hours ago by avibootz
0 votes
// 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!

*)

 



answered 1 hour ago by avibootz
...