Changeset 9 for branches/Void/UModel.pas


Ignore:
Timestamp:
Nov 9, 2009, 10:15:36 AM (15 years ago)
Author:
george
Message:
  • Přidáno: Definování systémových procedůr.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/Void/UModel.pas

    r8 r9  
    2121  end;
    2222
    23   { TBeginEnd }
    24 
    2523  TBeginEnd = class
    2624    Commands: TList;
     
    2826    destructor Destroy; override;
    2927    procedure Clear;
     28  end;
     29
     30  TProcedure = class
     31    Name: string;
     32    Parameters: TStringList;
     33    BeginEnd: TBeginEnd;
     34    constructor Create;
     35    destructor Destroy; override;
    3036  end;
    3137
     
    3642  public
    3743    Variables: TList;
     44    Procedures: TList;
    3845    BeginEnd: TBeginEnd;
    3946    function FindVariableByName(AName: string): TVariable;
     47    function FindProcedureByName(AName: string): TProcedure;
     48    procedure Init;
    4049    procedure Clear;
    4150    constructor Create;
     
    5160  Variables := TList.Create;
    5261  BeginEnd := TBeginEnd.Create;
     62  Procedures := TList.Create;
    5363end;
    5464
     
    6070    TVariable(Variables[I]).Destroy;
    6171  Variables.Destroy;
     72  for I := 0 to Procedures.Count - 1 do
     73    TProcedure(Procedures[I]).Destroy;
     74  Procedures.Destroy;
    6275  BeginEnd.Destroy;
    6376  inherited Destroy;
     
    7487end;
    7588
     89function TModel.FindProcedureByName(AName: string): TProcedure;
     90var
     91  I: Integer;
     92begin
     93  I := 0;
     94  while (I < Procedures.Count) and (TProcedure(Procedures[I]).Name <> AName) do
     95    Inc(I);
     96  if I < Procedures.Count then Result := Procedures[I] else Result := nil;
     97end;
     98
     99procedure TModel.Init;
     100begin
     101  with TProcedure(Procedures[Procedures.Add(TProcedure.Create)]) do begin
     102    Name := 'WriteLn';
     103  end;
     104   with TProcedure(Procedures[Procedures.Add(TProcedure.Create)]) do begin
     105    Name := 'Exit';
     106  end;
     107  with TProcedure(Procedures[Procedures.Add(TProcedure.Create)]) do begin
     108    Name := 'ReadLn';
     109  end;
     110end;
     111
    76112procedure TModel.Clear;
    77113var
     
    82118  Variables.Clear;
    83119  BeginEnd.Clear;
     120  Init;
    84121end;
    85122
     
    124161end;
    125162
     163constructor TProcedure.Create;
     164begin
     165  BeginEnd := TBeginEnd.Create;
     166  Parameters := TStringList.Create;
     167end;
     168
     169destructor TProcedure.Destroy;
     170begin
     171  Parameters.Destroy;
     172  BeginEnd.Destroy;
     173  inherited Destroy;
     174end;
     175
    126176end.
    127177
Note: See TracChangeset for help on using the changeset viewer.