BSOne.SFC/Tocsg.Lib/VCL/Tocsg.Param.pas

79 lines
1.7 KiB
Plaintext

{*******************************************************}
{ }
{ Tocsg.Param }
{ }
{ Copyright (C) 2020 kkuzil }
{ }
{*******************************************************}
unit Tocsg.Param;
interface
uses
Tocsg.Obj, System.SysUtils;
type
TTgParam = class(TTgObject)
private
nParamCnt_: Integer;
sModulePath_,
sModuleName_: String;
protected
function GetParamIndex(sParam: String): Integer;
public
Constructor Create; override;
function ExistsParam(const sParam: String): Boolean;
function GetParamValue(const sParam: String): String;
property ModulePath: String read sModulePath_;
property ModuleName: String read sModuleName_;
property Count: Integer read nParamCnt_;
end;
implementation
{ TTgParam }
Constructor TTgParam.Create;
begin
Inherited Create;
nParamCnt_ := ParamCount;
sModulePath_ := ParamStr(0);
sModuleName_ := ExtractFileName(sModulePath_);
end;
function TTgParam.GetParamIndex(sParam: String): Integer;
var
i: Integer;
begin
Result := -1;
sParam := UpperCase(sParam);
for i := 1 to nParamCnt_ do
if UpperCase(ParamStr(i)) = sParam then
begin
Result := i;
exit;
end;
end;
function TTgParam.ExistsParam(const sParam: String): Boolean;
begin
Result := GetParamIndex(sParam) > -1;
end;
function TTgParam.GetParamValue(const sParam: String): String;
var
nIdx: Integer;
begin
Result := '';
nIdx := GetParamIndex(sParam);
if (nIdx >= 1) and (nIdx + 1 <= nParamCnt_) then
Result := ParamStr(nIdx + 1);
end;
end.