tobject2.pp 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. TYPE
  2. psimpleobject = ^tsimpleobject;
  3. tsimpleobject = object
  4. x: longint;
  5. z: array[0..34] of byte;
  6. Procedure Init(somez: longint);
  7. Procedure Hello;
  8. end;
  9. pbase = ^tbase;
  10. tbase = object
  11. numofentries : longint;
  12. constructor init(i : integer);
  13. destructor done; virtual;
  14. procedure showit; virtual;
  15. end;
  16. pderived = ^tderived;
  17. tderived = object(tbase)
  18. x: longint;
  19. constructor init;
  20. destructor done; virtual;
  21. procedure showit; virtual;
  22. end;
  23. Procedure TsimpleObject.init(somez: longint);
  24. var
  25. i: byte;
  26. Begin
  27. for i:=0 to 34 do
  28. z[i]:=i;
  29. x:=somez;
  30. end;
  31. Procedure TSimpleObject.hello;
  32. var
  33. i: byte;
  34. Begin
  35. WriteLn('hello world');
  36. for i:=0 to 34 do
  37. Write(z[i],' ');
  38. WriteLn;
  39. WriteLN(x);
  40. end;
  41. constructor tbase.init(i: integer);
  42. Begin
  43. numofentries := i;
  44. end;
  45. destructor tbase.done;
  46. Begin
  47. end;
  48. procedure tbase.showit;
  49. Begin
  50. WriteLn('This is the base class');
  51. end;
  52. constructor tderived.init;
  53. Begin
  54. inherited init(5);
  55. x:=10;
  56. end;
  57. procedure tderived.showit;
  58. Begin
  59. WriteLn('This is the derived class');
  60. WriteLn(numofentries);
  61. WriteLn(x);
  62. end;
  63. destructor tderived.done;
  64. Begin
  65. end;
  66. Procedure CreateObject;
  67. var
  68. obj: pbase;
  69. Begin
  70. obj^.showit;
  71. dispose(obj,done);
  72. end;
  73. var
  74. myobj: tsimpleobject;
  75. obj: pbase;
  76. devobj: tderived;
  77. Begin
  78. WriteLn(MemAvail);
  79. obj:=new(pbase,init(10));
  80. obj^.showit;
  81. WriteLn(MemAvail);
  82. dispose(obj,done);
  83. WriteLn(MemAvail);
  84. end.