- Код: Выделить всё
- {$mode objfpc}
 unit SCL;
 interface
 TYPE
 TList = Class
 type
 PList = ^AList;
 AList = record
 Next : PList;
 Data : POINTER;
 end;
 var
 First: PList;
 Last : PList;
 
 PROCEDURE Init();
 PROCEDURE PushFront(v: POINTER);
 END;
 implementation
 PROCEDURE TList.PushFront(v: POINTER);
 var
 p: PList;
 BEGIN
 New(P);
 P^.Data := V;
 P^.Next := First;
 First := P;
 END;
 PROCEDURE TList.Init();
 BEGIN
 First := NIL;
 END;
 BEGIN
 END.
main
- Код: Выделить всё
- {$mode objfpc}
 PROGRAM main;
 USES
 SCL;
 
 
 TYPE
 PRect = ^TRect;
 TRect = RECORD
 X, Y, W, H: INTEGER;
 END;
 VAR
 L: SCL.TList;
 M: PRect;
 BEGIN
 New(M);
 M^.X := 5;
 //L.Create;
 L.Init;
 L.PushFront(M);
 END.
При вызове PushFront(M); выдаёт ошибку 216.
Идея в том, что бы список реализовать в виде класса, а не просто функций. Раньше я классы не использовал.



