TweetFollow Us on Twitter

Dec 97 - Tips

Volume Number: 13 (1997)
Issue Number: 12
Column Tag: Tips and Tidbits

Tips and Tidbits

by Steve Sisak

Dynamically Sized Arrays in Think Pascal

Here's a tip for Think Pascal users, which has cost me a lot of time debugging every time I've crossed it:

Sometimes you need to create dynamically sized arrays, or arrays larger than the 32K you can build on the stack, or you just want your array in the heap rather than on the stack. The traditional way is to turn off range checking, define a type of array[0..0] of your record, then define a pointer (or even handle) to it, and access the array off the pointer or handle, ignoring the [0..0] bounds. This will fail with a skidding type error if you try to access beyond a 32K size in your array block. (By skidding error, its one of those that doesn't show up right away, but fails much later down the road, or at unusual places. Don't you hate skidding errors!)

What happens is that with the array[0..0] definition, the compiler thinks there's only one element (and technically, it's right!), and uses a sixteen bit value to construct the offset. Yes, that means the offset will overflow when you hit the 32K limit, and you'll start writing data in the memory space under your array, because the overflow will turn the offset negative. The way to fix this is to originally declare your array to be a large enough size so that the compiler will know it has to use a 32 bit offset. If you make it large enough so that you know you'll never, ever cross it, you can leave range check set on. It won't check the top end of your array, because you've made the number too large, but it will check the bottom.

Note also that if you detect this, and change the array bounds in the interface section of a unit, that it "will not change" the implementation in other units. You should force a complete recompile to be safe.

Here's some sample code, using a record with just two longs, but with enough records to cross the 32K limit. I've given constant values to some of the variables, but you can as easily use your own dynamic values:

type
landkey = record  { use whatever record you want }
 landsizeSF:longint;  { I use two longints }
 recID:longint;
end;

{ This code will fail if the following array bounds are changed to [0..0] }

landkeyArr = array[1..4000000] of landKey; { use a ridiculously large number }
landKeyArrPtr = ^landkeyArr;

var
 theSortblock:landKeyArrPtr;
 blockmarker, howmanyKeys:longint;

begin
 howmanyKeys := 6000;  { Actual array size, use what you need }

 theSortBlock = landKeyArrPtr(NewPtr(sizeof(landKey) * howmanyKeys));

 blockmarker := 5000;  { will write beyond 32K -> 5000 * 8 = 40000 }

 theSortBlock^[blockmarker].landSizeSF := 34343 * 5533; { stuff a value }
end;

Owen Hartnett
owenh@harlequin.com

 
AAPL
$565.32
Apple Inc.
+0.00
MSFT
$29.07
Microsoft Corpora
+0.00
GOOG
$603.66
Google Inc.
+0.00
MacTech Search:
Community Search:

Empire of the Eclipse Review
Empire of the Eclipse Review By Carter Dotson on May 24th, 2012 Our Rating: :: OVERSHADOWINGiPhone App - Designed for the iPhone, compatible with the iPad Empire of the Eclipse is an ambitious strategy MMO that is very deep, and... | Read more »
Bejeweled HD Review
Bejeweled HD Review By Jennifer Allen on May 24th, 2012 Our Rating: :: ADDICTIVEiPad Only App - Designed for the iPad The iPad version of the ever addictive Match Three title.   Developer: PopCap Price: $3.99 Version Reviewed: 1... | Read more »
Facebook Releases New Camera App To Stre...
While not a replacement for Instagram, Facebook Camera is a good first step in this month+ old union of the two companies. Released today, Facebook camera looks to streamline the viewing of photos and the uploading of them. The app allows you to... | Read more »
Missile Monkey Review
Missile Monkey Review By Lisa Caplan on May 24th, 2012 Our Rating: :: FLYING LOWUniversal App - Designed for iPhone and iPad Missile Monkey is a must miss   Developer: Munsey Clan Games Price: $0.99 Version Reviewed: 1.0 Device... | Read more »
Boomlings Review
Boomlings Review By Lisa Caplan on May 24th, 2012 Our Rating: :: FUN FREEBIEUniversal App - Designed for iPhone and iPad Boomlings is a traditional matching puzzle game, with some explosive twists   | Read more »
Dave vs Cave Review
Dave vs Cave Review By Jason Wadsworth on May 24th, 2012 Our Rating: :: WATCH FOR FALLING ROCKSUniversal App - Designed for iPhone and iPad Kid falls down hole, kid gets trapped in cave, kid fights evil rock monsters to escape... | Read more »
Python Pocket Power: Python Bytes 3 – Mo...
Python fans are certain to welcome the best bits from the penultimate season of the BBC sketch comedy in a new iPhone app: Python Bytes 3 – Monty Python Series 3. If you have a flair for the obvious, you’ll correctly assume this is third in a series... | Read more »

Price Scanner via MacPrices.net

13″ 2.8GHz MacBook Pro on sale for $100 off MSRP
Adorama has lowered their price on the 13″ 2.8GHz MacBook Pro to $1399 including free shipping plus NY/NJ sales tax only. Their price is $100 off MSRP, and it’s the lowest price for this model from... Read more
Apple refurbished iPads available starting at $279
 The Apple Store Online has dropped prices on Apple Certified Refurbished iPad 2s and original iPads by as much as $50, with models now starting at $279. Apple’s one-year warranty is included with... Read more
Security Based Portable Operating System, Pocket D...
In conjunction with their consumer technology product, Pocket Desktop, a USB device that offers consumers enhanced security and portability in computing, has announced a new strategic alliance with... Read more
Apple’s Jonathan Ive Knighted By Britain’s Princes...
The BBC reports that Apple Senior Vice President Of Industrial Design Jonathan Ive is now Sir Jonathan Ive, having been knighted by Queen Elizabeth II’s daughter Anne, the Princess Royal (and an iPad... Read more
Microsoft Fixing to release Office for iOS and And...
BGR’s Jonathan S. Geller says BGR has learned from a “reliable source” that Microsoft is planning to release the company’s full Office suite for not only Apple’s iPad, but for Android tablets as well... Read more
Mac mini Server available for $949, $50 off MSRP
Adorama has Mac mini Servers on sale for $949 including free shipping. Their price is $50 off MSRP, and it’s the lowest price available for this model from any Apple Authorized Reseller. NY and NJ... Read more
21″ 2.7GHz iMac on sale for $1399, $100 off full r...
Adorama has the 21″ 2.7GHz iMac on sale for $1399 including free shipping. Their price is $100 off MSRP, and it’s the lowest price for this model from any Apple Authorized Reseller. NY and NJ sales... Read more
iMacs on sale bundled with free upgrade to 8GB RAM
MacConnection has 2011 iMacs in stock today with a free upgrade to 8GB of RAM. Shipping is also free. Their prices represent a $200+ savings over custom 8GB iMacs at The Apple Store: - 21″ 2.5GHz... Read more

Jobs Board

iPhone Mobile Developer at Mapmyfitness...
About MapMyFitness, Inc.: We're a well-funded and fast growing start-up. We're building the future of fitness applications on both the web and mobile. MapMyFitness is consistently ranked among the... Read more
Civil Engineering iPhone/iPad Applicatio...
I want to hire an application developer to design a universal iPhone/iPad application. The app is a calculator for civil engineers. Please see the attached Scope of Work. Desired Skills: iPhone, iPad... Read more
Helpdesk Support Technician - Mac Expert...
Mac hardwaresoftware preferably as a Mac Genius or Apple technician Demonstrated ability to troubleshoot ... in Mac OS X/Windows OS administration, exp supporting Mac, certified Apple and/or Windows... Read more
Mac Expert - Apple Online Store at Apple...
before calling a helpdesk for assistance). Description The Mac Expert is responsible for providing consultative ... to be effective, the Mac Expert will be knowledgeable about Mac product features... Read more
iOS Developer (iPhone and iPad) at Mahal...
Mahalo is looking for talented iOS developers to join its team of highly skilled engineers. Weve already released multiple successful apps in the Apple App Store with well over a million installs... Read more
All contents are Copyright 1984-2011 by Xplain Corporation. All rights reserved. Theme designed by Icreon.