|
18 | 18 | private |
19 | 19 | FGenerator: TGenerator; |
20 | 20 | FParams: TStringList; |
| 21 | + function CheckShortParams(const AParam: char): Boolean; |
| 22 | + function CheckLongParams(const AParam: string): Boolean; |
21 | 23 | protected |
22 | 24 | function ParseConsoleParams: boolean; |
23 | 25 | procedure Run; |
|
58 | 60 | end; |
59 | 61 | end; |
60 | 62 |
|
| 63 | +function TOneBRCGenerator.CheckLongParams(const AParam: string): Boolean; |
| 64 | +var |
| 65 | + J: Integer; |
| 66 | +begin |
| 67 | + for J := 0 to Pred(Length(cLongOptions)) do |
| 68 | + begin |
| 69 | + if (AParam = cLongOptions[J]) then |
| 70 | + begin |
| 71 | + Result := True; |
| 72 | + Break; |
| 73 | + end; |
| 74 | + end; |
| 75 | +end; |
| 76 | + |
| 77 | +function TOneBRCGenerator.CheckShortParams(const AParam: char): Boolean; |
| 78 | +var |
| 79 | + J: Integer; |
| 80 | +begin |
| 81 | + for J := 0 to Pred(Length(cShortOptions)) do |
| 82 | + begin |
| 83 | + if (AParam = cShortOptions[J]) then |
| 84 | + begin |
| 85 | + Result := True; |
| 86 | + Break; |
| 87 | + end; |
| 88 | + end; |
| 89 | +end; |
| 90 | + |
61 | 91 | destructor TOneBRCGenerator.Destroy; |
62 | 92 | begin |
63 | 93 | if Assigned(FParams) then |
|
70 | 100 | I, J, invalid, valid: Integer; |
71 | 101 | tmpLineCount: String; |
72 | 102 | ParamOK: Boolean; |
| 103 | + SkipNext: Boolean; |
73 | 104 | begin |
74 | 105 | Result := false; |
75 | 106 | // initialize the params list |
@@ -99,35 +130,28 @@ begin |
99 | 130 | // check for invalid input |
100 | 131 | if FParams.Count > 0 then |
101 | 132 | begin |
| 133 | + SkipNext := False; |
102 | 134 | for I := 0 to FParams.Count - 1 do |
103 | 135 | begin |
104 | | - ParamOK := False; |
105 | | - for J := 0 to Pred(Length(cShortOptions)) do |
| 136 | + if SkipNext then |
106 | 137 | begin |
107 | | - if (FParams[I] = cShortOptions[J]) then |
108 | | - begin |
109 | | - ParamOK := True; |
110 | | - Break; |
111 | | - end; |
| 138 | + SkipNext := False; |
| 139 | + Continue; |
112 | 140 | end; |
113 | 141 |
|
114 | | - if not ParamOK then |
115 | | - for J := 0 to Pred(Length(cLongOptions)) do |
116 | | - begin |
117 | | - if (FParams[I] = cLongOptions[J]) then |
118 | | - begin |
119 | | - ParamOK := True; |
120 | | - Break; |
121 | | - end; |
122 | | - end; |
| 142 | + if (Length(FParams[I]) = 1) or (FParams[I][2] = '=') then |
| 143 | + ParamOK := CheckShortParams(FParams[I][1]) |
| 144 | + else |
| 145 | + ParamOK := CheckLongParams(Copy(FParams[I], 1, Pos('=', FParams[I]) - 1)); |
123 | 146 |
|
| 147 | + // if we found a bad parameter, don't need to check the rest of them |
124 | 148 | if not ParamOK then |
125 | 149 | Break; |
126 | 150 | end; |
127 | 151 |
|
128 | 152 | if not ParamOK then |
129 | 153 | begin |
130 | | - WriteLn(Format(rsErrorMessage, [FParams.Text])); |
| 154 | + WriteLn(Format(rsErrorMessage, [FParams.CommaText])); |
131 | 155 | Result := false; |
132 | 156 | exit; |
133 | 157 | end; |
|
0 commit comments