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

    {
    I've just "completed" (are programs *ever* completed?:) a rather
    large programming project for a 3rd year uni subject.

    We chose to use TechnoJock's Object Toolkit (currently available
    version via Internet ftp) for much of the user interface (I'm
    sorry we didn't look at TurboVision, but that's another story),
    and I must admit that I was impressed with its overall
    functionality (I counted 87 different objects along with many
    useful non-object procedures), its ease of use and the generally
    flawless results it produced.

    However, there is a MAJOR point that I would like to share with
    you all about this great toolkit that is NOT documented but
    ESSENTIAL to know about if you use it.

    The problem was that after a program that uses TOT was run, the
    system became very unstable afterwards with memory problems,
    usually locking up or something similar when subsequent programs
    are run.

    I solved this problem by calling all the destructor Done methods
    of all the active TOT objects, then disposing of those on the
    memory heap just before exiting the program.  Now the TOT docs
    actually discourages this, but they don't mention that it does
    indeed NEED to be done before termination of the program.

    For example:
    }

    uses
      Crt, { Borland }
      totINPUT,
      totFAST,
      totDir,
      totIO1,
      totMSG,
      totKEY,
      totWIN,
      totLIST,
      totLINK,
      totLOOK,
      totSYS,
      totDATE;
      { TechnoJocks }
      { other units }

    { Then later... }

    procedure TidyUpMess;
    { shutdown procedure }
    begin
      { Tidy up after ourselves }
      dispose(myobjects, Done);
      { Tidy up after TechnoJocks }
      Mouse.Hide;                   { turn off the mouse }
      Screen.CursOn;                { vain attempt to get a cursor back in DOS }
      Screen.Done;                  { totFAST - the screen object is a variable}
      Key.Done;                     { totINPUT }
      Mouse.Done                    { totINPUT }
      Dispose(ALPHABETtot,Done);    { totINPUT }
      Dispose(LOOKtot,Done);        { totLOOK }
      Dispose(MONITOR,Done);        { totSYS }
      Dispose(IOtot,Done);          { totIO }
      Dispose(DATEtot,Done);        { totDATE }
      Dispose(SCROLLtot,Done);      { totFAST }
      Dispose(SHADOWtot,Done);      { totFAST }
    end;

    {
    This does the job nicely... no more problems (that I could find,
    anyway).  Note that the order of some of these calls is important.

    The only problem that remains is that on dropping back to dos the
    cursor is no longer there (but only with command.com - NOT if
    4dos is installed - _strange_ indeed).

    BTW, does anybody have a nice fix for this missing cursor?

    Hopefully somebody will find this hard-found information useful.
    If someone knows how to email or netmail the authors, then I'm
    sure that they would like to know about this too; all I've got
    about them is the following:

      TechnoJock Software, Inc.
      PO Box 820927
      Houston TX 77282
      Enquiries (713) 493-6354
      Compuserve ID: 74017,227
      Fax: (713) 493-5872
    }

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