[Back to OOP SWAG index] [Back to Main SWAG index] [Original]

    {
    > But it's not bad if they DON'T have them, is it? Defining what is good or
    > bad from reading the manual is the single most difficult problem I have
    > with them for anything (not just TP). I wouldn't suppose
    > it would be if you can do it.

    I'm not sure what you mean by good or bad.  If you want to use virtual methods,
    you need a VMT.  Not having one would be very bad.  If you don't want to use
    virtual methods, then you probably don't need a VMT.  The only reason you might
    want one is for debugging:  you can check whether an object has been
    initialized by checking whether its VMT is valid.  Here's the check I use:
    }

    Function ObjCheck(o:PObject;msg:string):boolean;
    type
      VMT = record
              size, negsize : integer;
            end; var
      PVmt : ^VMT;
    begin
      PVmt := Ptr(DSeg, word(Pointer(o)^));
      with PVmt^ do
        if (size = 0) or (size + negsize <> 0) then
        begin
          write(msg,':  Not initialized');
          ObjCheck := false;
        end
        else
          ObjCheck := true; end;

    { This is pretty close to the same check that $R+ does. }

[Back to OOP SWAG index] [Back to Main SWAG index] [Original]