{ 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.