Hier ist der Code zum einfügen in die liste. Das ist der einzige Codeteil, der änderungen an der liste vornimmt:
Delphi-Quellcode:
procedure TMakro.AddInput (Pressed : Boolean; Name : Integer);
begin
//Liste komplett leer
if Makro = nil then
begin
new (Makro);
Makro.Next := nil;
RefMakro := Makro;
new (RefMakro.Commands);
Makro.TimeStamp := TimeStamp;
RefCommand := Makro.Commands;
Makro.Commands.InputName := Name;
Makro.Commands.Pressed := Pressed;
end
else
// TimeStamp existiert schon, also nur command in command liste einfügen
begin
if TimeStamp = RefMakro.TimeStamp then
begin
new (RefCommand.Next);
RefCommand := RefCommand.Next;
RefCommand.Next := nil;
RefCommand.InputName := Name;
RefCommand.Pressed := Pressed;
end
else
// Timestamp größer als momentaner Referenztimestamp, also neuer Makro-Listen-Eintrag + neuen command einfügen
begin
new (RefMakro.Next);
RefMakro := RefMakro.Next;
RefMakro.Next := nil;
RefMakro.TimeStamp := TimeStamp;
new (RefMakro.Commands);
RefCommand := RefMakro.Commands;
RefCommand.Next := nil;
RefCommand.InputName := Name;
RefCommand.Pressed := Pressed;
end;
end;
end;
Zu sagen: Die Variablen Makro und TimeStamp existieren als private in der Klasse TMakro. TimeStamp ist ein Integer und Makro ist PMakroList. RefCommand und RefMakro existieren ebenfalls als private.