program testing_vstupnich_parametru; {$mode objfpc}{$H+} uses {$IFDEF UNIX}{$IFDEF UseCThreads} cthreads, {$ENDIF}{$ENDIF} Classes { you can add units after this }; var barvy : array [1..4] of string; hoven : integer; barva : string; i : byte; // vypise napovedu procedure help; begin writeln ; writeln ('help:'); writeln ; writeln (' -h vypise tuto napovedu'); writeln ; writeln (' -hoven [ integer, interval 0 az 99 ]'); writeln (' pocet hoven, defaultne "1"'); writeln ; write (' -barva [ '); for i:=1 to length(barvy) do begin write(barvy[i]); if i<>length(barvy) then write(' | '); end; writeln (' ]'); writeln (' barva hoven, defaultne "hneda"'); writeln ; end; // vyplni promenne zadanymi argumenty procedure input_param (var shits:integer; var color:string); var parametry : array [1..10] of string; y : byte; returned : integer; allparamok : boolean; begin parametry[1]:='-h'; parametry[2]:='-hoven'; parametry[3]:='-barva'; allparamok := false; for i:=1 to paramcount do begin for y:=1 to length(parametry) do begin if paramstr(i) = parametry[y] then begin allparamok := true; break; end; end; if allparamok = false then begin writeln ; writeln ('neexistujici parametr nebo spatna hodnota parametru: ',paramstr(i)); break; end; end; if allparamok = false then begin help; halt(0); end else begin for i:=1 to paramcount do begin // napoveda if paramstr(i)=parametry[1] then begin help; halt(0); end; // hoven if paramstr(i)=parametry[2] then begin val(paramstr(i+1),shits,returned); if (returned<>0) or not(shits in [0..99]) then begin shits:=1; writeln ('wrong value of parameter "-hoven"'); writeln ('pouziji hodnotu: ',shits); continue; end; end; // barva if paramstr(i)=parametry[3] then begin if (paramstr(i+1)=barvy[1]) or (paramstr(i+1)=barvy[2]) or (paramstr(i+1)=barvy[3]) or (paramstr(i+1)=barvy[4]) then color:=paramstr(i+1) else begin color:=barvy[1]; writeln ('wrong value of parameter "-barva"'); writeln ('pouzije se hodnota ',color); end; end; end; end; end; (* PROGRAM *) begin barvy[1]:='hneda'; barvy[2]:='cerna'; barvy[3]:='seda'; barvy[4]:='sracka'; writeln (chr(10),'testing vstupnich parametru'); hoven:=1; barva:='hneda'; if paramcount >= 1 then begin input_param(hoven,barva); writeln ; writeln ('pocet hoven je: ',hoven); writeln ('jejich barva je: ',barva); writeln ; writeln ('for EXIT press Enter'); readln; end else begin help; end; end.