home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / magazine / insidetp / 1990_09 / ll_demo.pas < prev    next >
Pascal/Delphi Source File  |  1990-09-04  |  2KB  |  78 lines

  1. PROGRAM LL_Demo;
  2.  
  3. USES LinkList;
  4.  
  5. { Turbo Pascal Linked List Object Example }
  6.  
  7. TYPE
  8.  
  9.   DataValuePtr = ^DataValue;
  10.  
  11.   DataValue = OBJECT (NodeValue)
  12.     Value : Real;
  13.     CONSTRUCTOR Init (A_Value : Real);
  14.     FUNCTION TheValue : Real;
  15.   END;
  16.  
  17.   DataList = OBJECT (NodeList)
  18.     FUNCTION CurrentValue (Ptr : NodePtr) : Real;
  19.     PROCEDURE SetCurrentValue (Ptr : NodePtr; Value : Real);
  20.   END;
  21.  
  22. VAR
  23.     Itr : NodePtr;
  24.     TestLink : DataList;
  25.  
  26. {------ Unique methods to create for your linked list type -----}
  27.  
  28. CONSTRUCTOR DataValue.Init (A_Value : Real);
  29. BEGIN
  30.     Value := A_Value;
  31. END;
  32.  
  33. FUNCTION DataValue.TheValue : Real;
  34. BEGIN
  35.   TheValue := Value;
  36. END;
  37.  
  38. FUNCTION DataList.CurrentValue (Ptr : NodePtr) : Real;
  39. BEGIN
  40.   CurrentValue := DataValuePtr (Ptr^.Retrieve)^.TheValue;
  41. END;
  42.  
  43. PROCEDURE DataList.SetCurrentValue (Ptr : NodePtr; Value : Real);
  44. BEGIN
  45.   DataValuePtr (Ptr^.Retrieve)^.Value := Value;
  46. END;
  47.  
  48.  
  49. BEGIN
  50.   TestLink.Init;        {Create the list then add 5 values to it}
  51.  
  52.   TestLink.Add (New (DataValuePtr, Init (1.0)));
  53.   TestLink.Add (New (DataValuePtr, Init (2.0)));
  54.   TestLink.Add (New (DataValuePtr, Init (3.0)));
  55.   TestLink.Add (New (DataValuePtr, Init (4.0)));
  56.   TestLink.Add (New (DataValuePtr, Init (5.0)));
  57.  
  58.   TestLink.StartIterator (Itr);      {Display the list on screen}
  59.   WHILE NOT TestLink.AtEndOfList (Itr) DO BEGIN
  60.     Write (TestLink.CurrentValue (Itr) : 5 : 1);
  61.     TestLink.NextValue (Itr);
  62.     END;
  63.   WriteLn;
  64.  
  65.   TestLink.StartIterator (Itr);  {Change some values in the list}
  66.   TestLink.SetCurrentValue (Itr, 0.0);
  67.   TestLink.NextValue (Itr);
  68.   TestLink.SetCurrentValue (Itr, -1.0);
  69.  
  70.   TestLink.StartIterator (Itr);       {Redisplay the list values}
  71.   WHILE NOT TestLink.AtEndOfList (Itr) DO BEGIN
  72.     Write (TestLink.CurrentValue (Itr) : 5 : 1);
  73.     TestLink.NextValue (Itr);
  74.   END;
  75.   WriteLn;
  76.   ReadLn;
  77. END.
  78.