Das Problem ist, es handelt sich um einen interpreter, der natürlich zur laufzeit sachen erzeugt und das override von funtkionen bringe ich nicht zum laufen, da mir hier etwas der plan fehlt
so ein script sieht dann zb so aus
Delphi-Quellcode:
unit testinterpreterv3;
type
TProzessItem =
class
private
fTyp : integer;
Name :
string;
public
constructor Create;
override;
destructor Destroy;
override;
procedure Show;
end;
TProzessList =
class(TList)
private
myCount : integer;
public
constructor Create;
override;
destructor Destroy;
override;
procedure Clear;
function FindByTyp(Typ : integer) : TProzessItem;
function AddTyp(Typ : integer;
Name :
string) : TProzessItem;
end;
constructor TProzessItem.Create;
begin
ShowMessage('
TProzessItem.Create');
end;
destructor TProzessItem.Destroy;
begin
ShowMessage('
TProzessItem.Free');
end;
constructor TProzessList.Create;
begin
myCount := 0;
ShowMessage('
ProzessList.Create');
end;
destructor TProzessList.Destroy;
begin
ShowMessage('
ProzessList.Free');
end;
procedure TProzessList.Clear;
var
i : integer;
begin
for i:=0
to Count-1
do Item[i].Free;
inherited;
end;
function TProzessList.AddTyp(Typ : integer;
Name :
string) : TProzessItem;
begin
Result := TProzessItem.Create;
Result.fTyp := Typ;
Result.
Name :=
Name;
Add(Result);
myCount := myCount + 1;
end;
function TProzessList.FindByTyp(Typ : integer) : TProzessItem;
var
i : integer;
begin
Result :=
nil;
for i:=0
to Count-1
do
if Items[i].fTyp = Typ
then begin
Result := Items[i];
break;
end;
end;
procedure TProzessItem.Show;
begin
ShowMessage(
Name);
Name :=
Name + '
test';
end;
function main : integer;
var
x : TProzessItem;
x2 : TProzessItem;
li : TProzessList;
begin
li := TProzessList.Create;
x := li.AddTyp(1, '
test');
li[0].Show;
li.FindByTyp(1).Show;
ShowMessage(myCount.Count);
li.Free;
end;
end.
... und das Clear schaffe ich nicht, das er mir nun aufruft, weil ich nicht weiss ob und wie ich mich hier zwischen delphi hängen kann ...