JarUnPacker/prereq/ANB ST CP/data/ParamsMngr.pas
2023-02-02 12:02:14 +03:00

97 lines
2.3 KiB
ObjectPascal

unit ParamsMngr;
{$MODE Delphi}
{$codepage UTF8}
interface
uses StrUtils, VCLEx;
{stdcalls}
function HasParam (const AParams: String; const AParam: Char): Boolean; OVERLOAD; STDCALL;
function HasParam (const AParams: String; const AParam: String): Boolean; OVERLOAD; STDCALL;
function HasParam (const AParam: String): Boolean; OVERLOAD; STDCALL;
function GetParamValue (const AParams: String; const AParam: Char): String; OVERLOAD; STDCALL;
function GetParamValue (const AParams: String; const AParam: String): String; OVERLOAD; STDCALL;
function GetParamValue (const AParam: string): string; overload; stdcall;
function StartParams: String; STDCALL;
implementation
function HasParam (const AParams: String; const AParam: Char): Boolean;
begin
Result:= False;
if AParams <> '' then
if Pos('/' + AParam, AParams) > 0 then
Result:= True;
end;
function HasParam (const AParams: String; const AParam: String): Boolean;
var PS: IntEx;
NextChr: Char;
begin
Result:= False;
if AParams <> '' then
begin
PS:= Pos('/' + AParam, AParams);
if PS > 0 then
begin
NextChr:= AParams[PS + Length(AParam) + 1];
if (NextChr = '=') or (NextChr = '#') then
Result:= True;
end;
end;
end;
function HasParam (const AParam: String): Boolean;
begin
Result:= HasParam(StartParams, AParam);
end;
function GetParamValue (const AParams: String; const AParam: Char): String;
var i, j, k: IntEx;
begin
Result:= '';
i:= 0;
j:= 0;
k:= 0;
if AParams <> '' then
begin
i:= Pos('/' + AParam, AParams);
if (i > 0) and (AParams[i+2] = '=') then
j:= i+3;
if j > 0 then
begin
k:= PosEx('#', AParams, j);
if k = 0 then
k:= Length(AParams) + 1;
Result:= Copy(AParams, j, k-j);
end;
end;
end;
function GetParamValue (const AParams: String; const AParam: String): String;
var i, j, k: IntEx;
begin
Result:= '';
i:= 0;
j:= 0;
k:= 0;
if AParams <> '' then
begin
i:= Pos('/' + AParam, AParams);
if (i > 0) and (AParams[i + Length(AParam) + 1] = '=') then
j:= i + Length(AParam) + 2;
if j > 0 then
begin
k:= PosEx('#', AParams, j);
if k = 0 then
k:= Length(AParams) + 1;
Result:= Copy(AParams, j, k-j);
end;
end;
end;
function GetParamValue (const AParam: String): String;
begin
Result:= GetParamValue(StartParams, AParam);
end;
function StartParams: String;
var i: IntEx;
begin
Result:= '';
if Paramcount > 0 then
for i:= 1 to Paramcount do
Result:= Result + ParamStr(i) + '#';
end;
end.