Zitat:
Delphi-Quellcode:
State := CoStartState.Create;
While Not State.IsStopState Do Begin
State := State.NextState;
State.DoProcessState();
End;
ich würde es dann eher so machen
Delphi-Quellcode:
State := CoStartState.Create;
While Not State.IsStopState Do Begin
State.DoProcessState();
State := State.NextState;
End;
so würde der StartState auch verarbeitet
und im Fall eines StopStates würde die Schleife auch verlassen, bevor der StopState verarbeitet würde.
Delphi-Quellcode:
Type
IAbstractState = Interface
Public
Function NextState (Token : TSymbol) : IAbstractState;
Procedure DoProcessState;
Function IsStopState : Boolean;
Function IsErrorState : Boolean;
Function GetErrorText : WideString;
End;
State := CoStartState.Create;
While Not State.IsStopState and Not State.IsErrorState Do Begin
State.DoProcessState();
State := State.NextState;
End;
If State.IsErrorState Then ShowError(State.GetErrorText);