home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1993 #1 / NN_1993_1.iso / spool / comp / sys / mac / programm / 20947 < prev    next >
Encoding:
Internet Message Format  |  1993-01-07  |  2.6 KB

  1. Path: sparky!uunet!spool.mu.edu!wupost!waikato.ac.nz!canterbury.ac.nz!cantua!misc042
  2. Newsgroups: comp.sys.mac.programmer
  3. Subject: Think P & Printtraps.p
  4. Message-ID: <C0IEM1.GLy@cantua.canterbury.ac.nz>
  5. From: misc042@cantua.canterbury.ac.nz (Mr M J Miller)
  6. Date: Fri, 8 Jan 1993 00:27:36 GMT
  7. Organization: University of Canterbury, Christchurch, New Zealand.
  8. Nntp-Posting-Host: cantua.canterbury.ac.nz
  9. X-Newsreader: TIN [version 1.1 PL8]
  10. Lines: 83
  11.  
  12.  
  13. Hi,
  14. This pice of printing code works fine in a compiled application,
  15. but why does Think Pascal 4.01 intermittenly barf with error message
  16. something like "Launch and Chain not allowed" ?
  17.  
  18. Is it me or is it Think Pascal?
  19. The error is near the first close.
  20.  
  21. procedure document.mprint;
  22.       var
  23.          hPrtRec: THPrint; { Printer info record  handle }
  24.          pPrPort: TPPrPort; { Printer graphport etc }
  25.          iErr: osErr; { error codes }
  26.    begin
  27.       PrOpen;
  28.       iErr := PrError;
  29.  
  30.       if (iErr <> noErr) then
  31.  
  32.       else { PrOpen OK! }
  33.       begin
  34.          hPrtRec := THPrint(NewHandle(sizeOf(TPrint)));
  35.          if (hPrtRec = nil) then
  36.  
  37.          else { newHandle OK ! }
  38.          begin
  39.             PrintDefault(hPrtRec);
  40.             iErr := PrError;
  41.  
  42.             if (iErr <> noErr) then
  43.  
  44.             else { PrintDefault OK! }
  45.             begin
  46.                if (PrStlDialog(hPrtRec)) & (PrJobDialog(hPrtRec)) then
  47.                begin { dialogues OK! }
  48.                   pPrPort := PrOpenDoc(hPrtRec, nil, nil);
  49.                   iErr := PrError;
  50.  
  51.                   if (iErr <> noErr) then
  52.  
  53.                   else { PrOpenDoc OK! }
  54.                   begin
  55.                      PrOpenPage(pPrPort, nil);
  56.                      iErr := PrError;
  57.  
  58.                      if (iErr <> noErr) then
  59.                         eNotify('at PrOpenPage', 'Aborting Print', iErr)
  60.  
  61.                      else { PrOpenPage OK! }
  62.                         drawPrinter;
  63.                   end;  { PrOpenDoc OK! }
  64.  
  65.                   PrClosePage(pPrPort);
  66.                   iErr := PrError;
  67.  
  68.                   if (iErr <> noErr) then
  69.                end; { dialogues OK! }
  70.  
  71.                PrCloseDoc(pPrPort);
  72.                iErr := PrError;
  73.  
  74.                if (iErr <> noErr) then
  75.             end; { PrintDefault OK! }
  76.  
  77.             DisposHandle(handle(hPrtRec));
  78.          end; { newHandle OK! }
  79.       end; { PrOpen OK! }
  80.  
  81.       PrClose;
  82.       iErr := PrError;
  83.  
  84.       if (iErr <> noErr) then
  85.          eNotify('during print loop or at driver close', '', iErr)
  86.    end;
  87.  
  88. Any help would be appreciated.
  89.  
  90. misc042@cantua.canterbury.ac.nz OR
  91. m.miller@csc.canterbury.ac.nz
  92. (I am no way employed by,
  93.    or a spokesperson of,
  94.       the University of Canterbury)
  95.