[Back to CMDLINE SWAG index] [Back to Main SWAG index] [Original]
{
From: dissel@nunic.nu.edu (David S. Issel)
Someone was looking for command line parsing in turbo pascal.
This is a unit that I wrote years ago.
To use it, simply put the USES CMDLINE; in your program.
Example1: If you entered: MYPROG /x/y/z="this is a test"
TurboPascal would respond: ParamStr(x) Contents
=========== =================
1 /x/y/z="this
2 is
3 a
4 test"
My unit would respond: 1 /X
2 /Y
3 /Z=this is a test
Example2: If you entered: MYPROG file1,file2,file3
TurboPascal would respond: ParamStr(x) Contents
=========== =================
1 file1,file2,file3
My unit would respond: 1 FILE1
2 FILE2
3 FILE3
My unit replaces the ParamCount variable and ParamStr() function.
The original TurboPascal routines are retained as System.ParamCount and
System.ParamStr()
Try it, you'll like it... (I swear!)
-------- cut here ------------- cmdline.pas ---------------------
}
Unit CMDLINE; { Written by David S. Issel, 1989 }
Interface { public }
Var ParamCount:integer;
Function ParamStr(Param:word):string;
Implementation { private }
Var
ParamArray:array[1..62] of string[127];
Function ParamStr;
begin
if Param<=ParamCount
then ParamStr:=ParamArray[Param]
else ParamStr:='';
end;
Procedure SetupParamArray;
var
Index:word;
WorkStr:string;
procedure TxfrString;
var
SrchChar:string;
begin
SrchChar:=WorkStr[Index];
Inc(Index);
while (Index<=Length(WorkStr)) and (WorkStr[Index]<>SrchChar) do
begin
ParamArray[ParamCount]:=ParamArray[ParamCount]+WorkStr[Index];
Inc(Index);
end;
if Index<=Length(WorkStr)
then Inc(Index);
end;
begin
ParamCount:=0;
if System.ParamCount<1 then Exit;
WorkStr:=System.ParamStr(1);
if System.ParamCount>1
then for Index:=2 to System.ParamCount do
WorkStr:=WorkStr+' '+System.ParamStr(Index);
Index:=1;
repeat
Inc(ParamCount);
ParamArray[ParamCount]:='';
if (WorkStr[Index]=#34) or (WorkStr[Index]=#39)
then TxfrString
else
begin
if WorkStr[Index]<>','
then ParamArray[ParamCount]:=ParamArray[ParamCount]+
Upcase(WorkStr[Index]);
Inc(Index);
if Index<=Length(WorkStr)
then
begin
while (Index<=Length(WorkStr)) and (WorkStr[Index]<>#47)
and (WorkStr[Index]<>#32) and (WorkStr[Index]<>#34)
and (WorkStr[Index]<>#39) and (WorkStr[Index]<>#44)
do
begin
ParamArray[ParamCount]:=ParamArray[ParamCount]+
Upcase(WorkStr[Index]);
Inc(Index);
end;
if (Index<=Length(WorkStr)) and ((WorkStr[Index]=#34)
or (WorkStr[Index]=#39))
then TxfrString;
end;
end;
while (Index<=Length(WorkStr)) and (WorkStr[Index]=#32) do
Inc(Index);
until Index>Length(WorkStr);
end;
begin { Initialization Code }
SetupParamArray;
end.
[Back to CMDLINE SWAG index] [Back to Main SWAG index] [Original]