Switches

During the last weeks it happened often that I had to write some command line apps. The reason for this is that more and more things are running automatically in tools like FinalBuilder (I will write an article about this later).

One thing that makes the command line app life easier is the encapsulation of the switches in a record (Current Delphi versions allow records with methods).

type
  TSwitches = record
  strict private const
    cHelpSwitch = '?';
    cBackupCountSwitch = 'c';
  public
    class function BackupCount: Integer; static;
    class function Help: Boolean; static;
    class procedure PrintHelp; static;
  end;

...

class function TSwitches.BackupCount: Integer;
var
  sCount: string;
begin
  FindCmdLineSwitch(cBackupCountSwitch, sCount);
  TryStrToInt(sCount, Result);
end;

class function TSwitches.Help: Boolean;
var
  sHelp: string;
begin
  Result := (ParamCount = 0) or (FindCmdLineSwitch(cHelpSwitch, sHelp));
end;

class procedure TSwitches.PrintHelp;
begin
  Writeln(Format(SUsageSample, [TDBSwitches.cBackupFolderSwitch, TDBSwitches.cBackupCountSwitch]));

  Writeln;
  Writeln(SOptions);
  Writeln;

  Writeln(Format(SHelpSwitch, [TDBSwitches.cHelpSwitch]));
  Writeln(Format(SBackupCountSwitch, [TDBSwitches.cBackupCountSwitch]));
end;

This record can be used directly in the .dpr file.

begin
  if TDBSwitches.Help then
    TDBSwitches.PrintHelp
  else
    TDBWork.DeleteBackup(TDBSwitches.BackupFolder, TDBSwitches.BackupCount);
end.
This entry was posted in Tips and Tricks and tagged . Bookmark the permalink.