TweetFollow Us on Twitter

August 91 - Think Pascal 4

Think Pascal 4

Don Sawtelle

Having just expressed August's final proof back to Bill Anderson-lacking this page, of course-I have only to write this column, then it's on to October. Instead of writing an August issue overview, I'll describe a small useful workaround for failure handling with Think Pascal 4 (announced August 6th, and now shipping).

Just What you've been waiting for…

Think Pascal 4 runs under System 7 in both 24- and 32-bit modes, and works fine with virtual memory. It has all the headers required for writing System 7-savvy applications, and supports far code, making it possible to create applications that require up to 256k of jump table space. You can find out more about these and other new features by calling Symantec (617-275-4800)-or better yet, just order the upgrade. Oh, and project updates have been optimized; MacApp compiles noticeably faster.

…and Now 99% reliable

Think Pascal 4 is much more reliable when working with large MacApp applications than was Think Pascal 3. Think Pascal 3 had a serious flaw with respect to MacApp; if anything called Failure while running in the Think environment, and some of the routines on the stack at the time were compiled with the D option in the project window checked (so that you could source-debug them), Think Pascal was likely to crash. It would sometimes crash right away, and sometimes later, when you were no longer even thinking of your past failures. And projects could sometimes get corrupted, causing nasty problems that didn't go away until you removed the code from the project and rebuilt, or created a new project from scratch.

Because of all this, life was difficult when debugging anything with Think Pascal 3 that involved failure handling. The most useful technique for debugging failures-setting a stop sign at the beginning of the Failure procedure, so that you can see the context of the error before MacApp's failure handling cuts back the stack and displays the error dialog-caused Think Pascal 3 to crash when a failure occurred. I find it convenient to write code that uses failure handling even for recovery from soft (non-catastrophic) errors, so this was a real problem for me.

With the new release, Think Pascal 4 provides a couple of replacements for the MacApp failure library that you can use when debugging in the Think environment-one for use with the MacApp debugger, one for without. These libraries call a special trap that causes the Think Pascal debugging environment to do the cleanup it needs to for each routine that was on the stack at the time of a failure.

In my experience, with these special failure libraries, Think Pascal 4 is now almost 100% reliable. Most mysterious crashes of the Think environment eventually turn out to be my own runaway code trashing something that's none of its business. (Oh, for a protected memory space!) There are only two limitations: (1) you have to compile your entire application, including MacApp, with the Think debugging option on, because the special failure library isn't smart about not calling the Think cleanup code if a routine on the stack wasn't compiled with the Think debugging option; and (2) for some reason, which I hope Symantec technical support can eventually explain, a failure during application initialization(IMyApplication) still crashes Think Pascal, if you're using the special failure libraries.

The first limitation isn't serious unless your code runs too slowly when the entire application is compiled with Think debugging on. And it's safe to compile units that won't fail, and that don't call any routines which could fail, without Think debugging.

The second limitation seems to be the last remaining bit of Think Pascal's former unreliability that developers have lived with for so long. If your application does nothing complex during initialization, and your code doesn't have any bugs, you may not encounter the problem. I have an application that looks for devices during IMyApplication, and that uses failure handling as a way to gracefully handle their absence; if you do something like this, you'll be sure to repeatedly encounter the hard crash.

I've come up with a simple workaround. It's kind of odd, but it seems to circumvent the problem, and not cause any new ones, either.

How to keep the special failure library from crashing Think Pascal 4

First, make sure you have a correct TMyApplication.Initialize method that puts your application object in a state where it can be safely freed if something goes wrong. Actually, nothing will go wrong-famous last words-but just in case. Then, in your MMyApplication.p unit, call IApplication instead of IMyApplication. Also, change IMyApplication so that it doesn't call IApplication. Add a boolean to TMyApplication called fPostInitialize, set it to false in TMyApplication.Initialize, and override MacApp's PollEvent as shown in the PollEvent listing. With these changes, the significant initialization code for your application-the code that might fail-won't execute until MacApp's event handling loop runs for the first time. Thus you'll avoid the possibility of failure at a time when it could crash Think Pascal.

Do be sure to contain these changes within {$IFC} directives, so that it's easy to build your standalone application without them. This workaround is a hack that's just intended for using during debugging; you don't want it in your final code! n

 
AAPL
$571.63
Apple Inc.
+10.35
MSFT
$29.67
Microsoft Corpora
-0.08
GOOG
$609.12
Google Inc.
-4.99
MacTech Search:
Community Search:

Edit Websites Right on the iPad With Gre...
Coda, the Mac OS X software by Panic for editing websites – and not just HTML code, but CSS and MySQL management, terminal support, and other features for truly managing a website – is coming to the iPad this Thursday along with Coda 2 for Mac. Diet... | Read more »
Avernum: Escape from the Pit HD Review
Avernum: Escape from the Pit HD Review By Kevin Stout on May 22nd, 2012 Our Rating: :: INSTANT CLASSICiPad Only App - Designed for the iPad Avernum: Escape from the Pit HD is a classic-style RPG with turn-based combat on tiles.   | Read more »
Sonos Subwoofer, the SONOSSUB, Revealed
Sonos is easily our favorite app enabled audio solution. And today they announce a new device to make it even better. Adding to the Sonos Play:3 and Play:5, we now have the SONOSSUB. As you may have guessed, a subwoofer. This booming beast looks... | Read more »
Domino! Review
Domino! Review By Jason Wadsworth on May 21st, 2012 Our Rating: :: CLASSIC WITH FRIENDSiPhone App - Designed for the iPhone, compatible with the iPad Play dominoes with friends online in this social gaming title.   Developer:... | Read more »
Juggernaut: Revenge of Sovering Review
Juggernaut: Revenge of Sovering Review By Kevin Stout on May 21st, 2012 Our Rating: :: MINI-GAME-FULUniversal App - Designed for iPhone and iPad Juggernaut: Revenge of Sovering is an RPG with great graphics and Infinity Blade-like... | Read more »
Sheep Up! Review
Sheep Up! Review By Rob Rich on May 21st, 2012 Our Rating: :: BAA-BAA-BOUNCEUniversal App - Designed for iPhone and iPad Who knew something as simple as a change in perspective could make such a big difference?   | Read more »
Uncover the Lost Levels in Where’s My Wa...
Fans of Disney Mobile’s hit game Where’s My Water - both the free and paid version – have a lot to be happy about. Disney just added iCloud support for cross-device game synching, and lots of new levels. | Read more »

Price Scanner via MacPrices.net

MacBook Pros bundled with discounted AppleCare, sa...
MacConnection has MacBook Pros bundled with discounted AppleCare Protection Plans yielding savings up to $180 off full MSRP: - 13″ 2.4GHz MacBook Pro w/AppleCare: $1378.99 MSRP $1448 - 13″ 2.8GHz... Read more
MacBooks up to $200 off at Apple Store for Educati...
Purchase a new MacBook Pro or MacBook Air at The Apple Store for Education and take up to $200 off MSRP. All teachers, students, and staff of any educational institution qualify for the discount.... Read more
AppleCare on sale for up to $105 off MSRP
B&H Photo has AppleCare Protection Plans for Macs on sale for up to $105 off MSRP including free shipping and NY sales tax only: - AppleCare Mac laptops 15″ and above: $244 MSRP $349 - AppleCare... Read more
27″ iMacs on sale for up to $130 off MSRP
  Apple resellers have 27″ iMacs on sale for up to $130 off MSRP. Each model below includes free shipping – B&H charges NY sales tax only, while Adorama charges sales tax in NY and NJ only: - 27... Read more
Apple offers 16GB iPad 2s for $399
The Apple Store is continuing to offer Black and White 16GB WiFi iPad 2s for $399 including free shipping. WiFi+3G models are available for $529. Each is $100 off their original MSRP and $100 less... Read more
Retina Display MacBooks Might Not Be The Best Idea
CNET’s Dan Ackerman suggests persistent rumors that the forthcoming new generation of Apple’s MacBook Pro laptops may fit in the be careful what you wish for category. Citing his CNET colleagues Josh... Read more
Keyboard The Key To iPad Productivity
Amitae blogger Graham K. Rogers says the iPad is a bit of a mystery to him in terms of it being promoted as a full-scale tool for productivity, noting that he tends to do most of his work on a... Read more
Ashton Kutcher Steve Jobs Movie Begins Filming in...
The film chronicling the life of Apple Inc. co-founder and charismatic master of innovation Steve Jobs begins principal photography in June, and in keeping with the project’s commitment to accuracy... Read more

Jobs Board

iOS Developer (iPhone and iPad) at Mahal...
Mahalo is on a mission to help the world quotLearn Anythingquot by creating high quality educational content available on mobile devices. Were looking to disrupt the education industry in a big way.... Read more
iPhone App at Elance.com (Plano, TX)
Create an iPhone App to do the following: 1. Take a picture at a default resolution 2. Identify the location street ... 5. email the picture, address, text notes and voice notes to an email address.... Read more
Iphone/Ipad App Development at Elance.co...
We are in need of an Iphone/Ipad app that will do the following: - Login and provide functionality to our Jomsocial 2.6 ... done ASAP. Job needs to be started quickly. Please provide time estimates... Read more
MAC Imaging/Packaging, Administration at...
Experience - 4 - 7 yrs Good experience in building MAC ( Apple Macintosh ) operating system images. OS imaging ... Knowledge on configuring the LAN and Wireless network on MAC note books Knowledge on... Read more
Mac/window Imaging/Packaging, Administra...
Experience - 4 - 7 yrs Very good experience in building MAC ( Apple Macintosh ) operating system images. OS imaging ... Requirements - 2 Working knowledge / experience on Apple / Mac OS imaging.... Read more
All contents are Copyright 1984-2011 by Xplain Corporation. All rights reserved. Theme designed by Icreon.