source: branches/textos/UApp.pas

Last change on this file was 53, checked in by chronos, 6 months ago
  • Added: Experimental textos computer.
File size: 1.5 KB
Line 
1unit UApp;
2
3{$mode delphi}
4
5interface
6
7uses
8 Classes, SysUtils, UApi, Generics.Collections;
9
10type
11 { TApp }
12
13 TApp = class
14 Name: string;
15 Api: TApi;
16 Terminated: Boolean;
17 procedure OnStart; virtual;
18 procedure OnTerminate; virtual;
19 procedure OnInputText; virtual;
20 procedure Run; virtual;
21 procedure Terminate; virtual;
22 constructor Create; virtual;
23 destructor Destroy; override;
24 end;
25
26 TAppClass = class of TApp;
27
28 TAppDescription = class
29 Name: string;
30 AppClass: TAppClass;
31 end;
32
33 { TAppDescriptions }
34
35 TAppDescriptions = class(TObjecTList<TAppDescription>)
36 function SearchByName(Name: string): TAppDescription;
37 end;
38
39
40implementation
41
42{ TAppDescriptions }
43
44function TAppDescriptions.SearchByName(Name: string): TAppDescription;
45var
46 I: Integer;
47begin
48 I := 0;
49 while (I < Count) and (Items[I].Name <> Name) do Inc(I);
50 if I < Count then Result := Items[I]
51 else Result := nil;
52end;
53
54{ TApp }
55
56procedure TApp.OnStart;
57begin
58end;
59
60procedure TApp.OnTerminate;
61begin
62end;
63
64procedure TApp.Terminate;
65begin
66 Terminated := True;
67 Api.Terminate;
68end;
69
70procedure TApp.OnInputText;
71begin
72end;
73
74procedure TApp.Run;
75var
76 Message: TApiMessage;
77begin
78 OnStart;
79 while not Terminated do begin
80 Message := Api.GetMessage;
81 case Message of
82 amInputText: OnInputText;
83 amTerminate: Terminate;
84 end;
85 end;
86 OnTerminate;
87end;
88
89constructor TApp.Create;
90begin
91 Api := TApi.Create;
92 Name := '';
93end;
94
95destructor TApp.Destroy;
96begin
97 FreeAndNil(Api);
98 inherited;
99end;
100
101
102end.
103
Note: See TracBrowser for help on using the repository browser.