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

 

Community Search:
MacTech Search:

Software Updates via MacUpdate

How to take over the world in Dictator 2
Running a country isn't easy - especially when you're a dictator who wants to take over the world and crush everyone in your path while you do it. [Read more] | Read more »
Tips and tricks to get a higher score in...
Tank.iois - you guessed it! - another multiplayer arena battler likeAgar.io and Slither.io. It does differentiate itself by putting you in a tiny tank though, so it's not exactly the same. To help you get that all-important high score, we've got a... | Read more »
How to unlock characters in One Tap Tenn...
As the title suggests, One Tap Tennis requires only a single tap to play its particular brand of tennis, and rewards you with a ton of unlockable characters if you perform well. Fortunately for you, we at 148Apps have got a few tips and tricks to... | Read more »
Grab it now: Game Craft’s Legend of War...
The real time strategy game is now available for you to sink your teeth into, through the App Store and Google Play. Combining elements of skill, strategy and empire building, Legend of War is a real gamers’ game. [Read more] | Read more »
Skateboard Party 3 ft. Greg Lutzka (Gam...
Skateboard Party 3 ft. Greg Lutzka 1.0 Device: iOS Universal Category: Games Price: $1.99, Version: 1.0 (iTunes) Description: Skateboard Party is back! This third edition of the popular sports franchise features professional skater... | Read more »
Cubious (Games)
Cubious 1.0 Device: iOS Universal Category: Games Price: $.99, Version: 1.0 (iTunes) Description: Cubious – How smart are you? How high is your IQube? Solve the impossible puzzles to find out, and help a lost little cube find his... | Read more »
Goat Simulator Waste of Space (Games)
Goat Simulator Waste of Space 1.1 Device: iOS Universal Category: Games Price: $4.99, Version: 1.1 (iTunes) Description: ** IMPORTANT - SUPPORTED DEVICESiPhone 4S, iPad 2, iPod Touch 5 or better.** | Read more »
Wildfulness - Unwind in nature and calm...
Wildfulness - Unwind in nature and calm your mind with nature sounds and illustrations 1.0 Device: iOS Universal Category: Healthcare & Fitness Price: $1.99, Version: 1.0 (iTunes) Description: Spending time in nature helps you to... | Read more »
Dr. Panda Racers (Education)
Dr. Panda Racers 1.0 Device: iOS Universal Category: Education Price: $2.99, Version: 1.0 (iTunes) Description: STEP ON THE GAS, RACE AND WIN!Fasten your seat belts and get ready to race! Speed your way to the finish line while doing... | Read more »
ROMANCING SAGA 2 (Games)
ROMANCING SAGA 2 1.0.0 Device: iOS Universal Category: Games Price: $17.99, Version: 1.0.0 (iTunes) Description: Romancing SaGa 2, originally released only in Japan in 1993, has been completely remastered and now receives its first... | Read more »

Price Scanner via MacPrices.net

Enterprise Workers Pick Technology Over Perks...
New Adobe study shows surprising attitudes about office jobs and where the future of work is heading. Adobe has released survey findings revealing that a surprising 70 percent of U.S. office workers... Read more
Goal Zero and OtterBox Partner to Expand iPh...
Goal Zero, specialists in portable power, have announced a partnership with OtterBox, brand smartphone case protection, to offer the Slide and Slide Plus Batteries as modules compatible with the new... Read more
15-inch Retina MacBook Pros on sale for up to...
B&H Photo has 15″ Retina MacBook Pros on sale for up to $210 off MSRP. Shipping is free, and B&H charges NY tax only: - 15″ 2.2GHz Retina MacBook Pro: $1799 $200 off MSRP - 15″ 2.5GHz Retina... Read more
Clearance 2015 13-inch MacBook Airs available...
B&H Photo has clearance 2015 13″ MacBook Airs available for $250 off original MSRP. Shipping is free, and B&H charges NY sales tax only: - 13″ 1.6GHz/4GB/128GB MacBook Air (MJVE2LL/A): $799... Read more
Apple refurbished Apple TVs available for up...
Apple has Certified Refurbished 32GB and 64GB Apple TVs available for up to $30 off the cost of new models. Apple’s standard one-year warranty is included with each model, and shipping is free: -... Read more
21-inch iMacs on sale for up to $120 off MSRP
B&H Photo has 21″ iMacs on sale for up to $120 off MSRP including free shipping plus NY sales tax only: - 21″ 3.1GHz iMac 4K: $1379.99 $120 off MSRP - 21″ 2.8GHz iMac: $1189 $110 off MSRP - 21″ 1... Read more
Kanex Introduces GoPower USB-C Rechargeable B...
Kanex has announced its GoPower USB-C portable battery for the USB-C MacBook, featuring the new industry standard connector and cable used for connectivity and power. Providing users with a new... Read more
Convertible and Detachable Devices Winning Ov...
According to the latest figures published by International Data Corporation (IDC), Western European shipments of ultraslim convertibles and detachables posted positive growth (44.7%) to account for... Read more
New MacBook Pros And Will MacBook Air Be Upgr...
With my mid-2013 13-inch MacBook Air closing on its third anniversary come November, I’m in system upgrade mode. Actually the Haswell CPU equipped Air is still doing a fine job, but my good wife is... Read more
Apple’s Education discount saves up to $300 o...
Purchase a new Mac or iPad using Apple’s Education Store and take up to $300 off MSRP. All teachers, students, and staff of any educational institution qualify for the discount. Shipping is free, and... Read more

Jobs Board

*Apple* Project Engineer - Smart Source Inc...
SmartSource is in need of an Apple Project Engineer for a 12 month contract opportunity in Pittsburg, PA. Role: Apple Project Engineer Location: Pittsburg, PA Read more
Automotive Sales Consultant - Apple Ford Linc...
…you. The best candidates are smart, technologically savvy and are customer focused. Apple Ford Lincoln Apple Valley is different, because: $30,000 annual salary Read more
Service Assistant - *Apple* Chevrolet *App...
Apple Automotive is one of the fastest growing dealer...and it shows. Consider making the switch to the Apple Automotive Group today! At Apple Automotive, we Read more
Editor, *Apple* News - APPLE (United States...
Job Summary The Apple News team is looking for a passionate and knowledgeable editor with experience covering entertainment/pop culture and experience running social Read more
*Apple* Nissan Service Technicians - Apple A...
Apple Automotive is one of the fastest growing dealer...and it shows. Consider making the switch to the Apple Automotive Group today! At Apple Automotive , Read more
All contents are Copyright 1984-2011 by Xplain Corporation. All rights reserved. Theme designed by Icreon.