home *** CD-ROM | disk | FTP | other *** search
/ Media Share 9 / MEDIASHARE_09.ISO / utility / v12n02.zip / NEWOBJTS.PAS < prev    next >
Pascal/Delphi Source File  |  1992-01-05  |  1KB  |  64 lines

  1. PROGRAM NewObjTst;
  2. USES NewObjByType,
  3. {$IFDEF Windows}
  4. WObjects,
  5. WinCrt;
  6. {$ELSE}
  7. Objects;
  8. {$ENDIF}
  9.  
  10. TYPE
  11.   PObj0 = ^TObj0;
  12.   TObj0 = OBJECT(TObject)
  13.     PROCEDURE Who; Virtual;
  14.   END;
  15.  
  16.   PObj1 = ^TObj1;
  17.   TObj1 = OBJECT(TObj0)
  18.     PROCEDURE Who; Virtual;
  19.   END;
  20.  
  21.   Dat2 = RECORD
  22.            iX, iY : Word;
  23.          END;
  24.   PObj2 = ^TObj2;
  25.   TObj2 = OBJECT(TObj0)
  26.     X, Y : Word;
  27.     CONSTRUCTOR Init(VAR D : Dat2);
  28.     PROCEDURE Who; Virtual;
  29.   END;
  30.  
  31.  
  32.   PROCEDURE TObj0.Who;
  33.   BEGIN
  34.     WriteLn('I am a TObj0.');
  35.   END;
  36.  
  37.   PROCEDURE TObj1.Who;
  38.   BEGIN
  39.     WriteLn('I am a TObj1.');
  40.   END;
  41.  
  42.   CONSTRUCTOR TObj2.Init(VAR D : Dat2);
  43.   BEGIN
  44.     TObj0.Init; X := D.iX; Y := D.iY;
  45.   END;
  46.  
  47.   PROCEDURE TObj2.Who;
  48.   BEGIN
  49.     WriteLn('I am a TObj2 : ',X,', ',Y,'.');
  50.   END;
  51.  
  52. VAR
  53.   A : ARRAY[0..2] OF PObj0;
  54.   N : Word;
  55.   Dat : Dat2;
  56. BEGIN
  57.   Dat.iX := 42; Dat.iY := $FFFF;
  58.   A[0] := PObj0(NewByType(TypeOf(TObj0), @TObj0.Init, N));
  59.   A[1] := PObj0(NewByType(TypeOf(TObj1), @TObj1.Init, N));
  60.   A[2] := PObj0(NewByType(TypeOf(TObj2), @TObj2.Init, Dat));
  61.   FOR N := 0 to 2 DO A[N]^.Who;
  62.   FOR N := 0 to 2 DO Dispose(A[N], Done);
  63. END.
  64.