misc/TEST.PAS

1.7 KB d2a9ae96a91a5985…
uses crt;
var
 mtotstack : byte;
 commandStr: string;
 mCommand : string;
 mParam : string;
     mStackPos : array[1..20] of byte;
     mStackEnd : array[1..20] of byte;

               procedure mSetStackNum;
                var x : byte;
                begin
                fillChar(mStackPos,sizeOf(mStackPos),1);
                fillChar(mStackEnd,sizeOf(mStackEnd),1);
                mTotStack := 1;
                for x := 1 to length(commandStr) do
                    if (commandStr[x]=';') then
                     begin
                     inc(mTotStack);
                     mStackPos[mTotStack]   := x+1;
                     mStackEnd[mTotStack-1] := x-1;
                     end;
                mStackEnd[mTotStack] := length(commandStr);
                end;

                procedure mGetStackData(num : byte);
                 begin
                 if (num=1) and (mTotStack=1) then
                  begin
                  mCommand := copy(commandStr,1,2);
                  mParam   := copy(commandStr,3,length(commandStr)-2);
                  end else
                   begin
                   mCommand := copy(commandStr,mStackPos[num],2);
                   mParam   := copy(commandStr,mStackPos[num]+2,mStackEnd[num]-2);
                   clrscr;
                   writeLn('stackpos1 = ',mStackPos[1]);
                   writeLn('commandStr = ',commandStr);
                   writeLn('command=',mCommand);
                   writeLn('param  =',mParam);
                   end;
                 end;

begin
 commandStr := '^$MAINABABA;SKA;^$MAIN';
 mSetStackNum;
 writeLn('total command in stack = ',mTotStack);
 mGetStackData(3);
end.