TweetFollow Us on Twitter

Mar 93 Tips, Tidbits
Volume Number:9
Issue Number:3
Column Tag:Tips & Tidbits

Tips & Tidbits

By Neil Ticktin, Editor-in-Chief

This column is your opportunity to spread the word about little bits of information that you find out about. These tidbits can be programming related or they can be user tips that are particularly useful to programmers.

MacTech Magazine will pay $25 for every tip used, and $50 for the Tip of the Month. Or you can take your award in orders or subscriptions.

To submit a tip, send in a letter to the magazine. E-mail is our preferred method, but feel free to send something via the US Mail. See page 2 for all addresses. If you do send snail mail, enclose a printed copy and a disk copy of the letter so that it does not have to be retyped.

Tip of the Month

Writing code that will walk your array instead of using a standard loop to access the array elements will improve the speed of the code 40-400% depending on the compiler you use.

Standard array access:

FOR index := 1 TO kNumOfElements DO
    theArray[index] := someNumber;

Optimized access:
{--elementSize is the size of one array element. This is an example }
{  of an array of long integers, therefore SizeOf(LongInt)}
   elementSize := SizeOf(LongInt);
   elementPtr := LongIntPtr(arrayHandle^); {--Ptr to 1st array elmnt.}
   endArrayAddress := ORD4(elementPtr) + elementSize * kNumOfElements;
   WHILE ORD(elementPtr) < endArrayAddress DO
   BEGIN
   elementPtr^ := someNumber;  {--elementPtr^ accesses the array }
  {elements.  Increment the elementPtr }
  {to point to the next elt in the array.}
   elementPtr := LongIntPtr(ORD(elementPtr) + elementSize);
   END;

Essentially, you're forcing the compiler to generate more efficient code for your loop.

-- Marek Hajek, Reno, Nevada

Self Documenting Code

Do yourself a favor: write self-documented code. Have you ever looked over source code that makes no sense whatsoever? Worse yet, have you ever looked at your own code six months later and you can't make heads or tails of it?

Try self-documented code. This is where you name functions and variables so well that there is no mistake about what they do.

Consider a function you are writing that, say, strips off all the trailing space characters from a string. The WRONG names to give this function are "String1," "StrStrip," "FixString," to name a few. A far better name would be:

  remove_trailing_spaces_from_string

Yes, the name is long, but it pays off in a big way! If you came back a year later and looked at the code, well, what does this function do? Duh! Does it remove trailing spaces from a string, perhaps?!

The same rule applies to variable declarations. Instead of the ol' fashion "i," "k," etc., start naming your variables real English names that make sense. Example:

length_of_text instead if "i" or "len"

number_of_records instead of "r"

users_name instead of "UserStr" or "str"

You will find this system is worth far more than pages of (meaningless?) comments!

- Gar, DataPak Software

DrawPicture Bug

There is a crashing bug in DrawPicture that can happen when you draw pictures that contain very wide PixMaps. DTS has verified that this is a bug in QuickDraw (on machines with IIci ROMs or later running 7.0 or later. Currently, that means the IIci, IIfx, LC, IIsi, Classic II, PowerBook 140 and 170, and the Quadras all have this bug). Thanks to Forrest Tanaka for the following information.

The problem happens with pictures that contain direct PixMaps that have been compressed using run-length encoding. The bug is that DrawPicture allocates two times the rowBytes value of the direct PixMap on the stack without first checking to make sure that there’s enough space to grow the stack that big. For wide PixMaps, two times the rowBytes can be very big, and so the stack can easily overflow when you try to draw a picture that contains a wide PixMap.

A reasonable work-around for this bug is to increase the size of the area of memory that’s reserved for your stack, which is just above your application’s heap. By default, Color QuickDraw machines provide you with a 24K stack. The widest possible PixMap has 16K per row, so multiply that by two and you get 32K as a maximum amount of stack space DrawPicture needs to draw the direct PixMap. Add to this a lot of slop for all the other stuff that you’ll have on the stack when you call DrawPicture, and a 48K to 64K stack becomes reasonable, in my opinion at least.

Increasing the size of the area of memory for the stack is done by setting the address of the top of your heap farther down from where it is by default. The SetApplLimit routine lets you set this address, and the GetApplLimit routine gives you the current address of the top of your heap. To add space to the memory that’s set aside for your stack, you can use something like the following line of code:

SetApplLimit(Ptr(Ord4(GetApplLimit) - kAdditionalStackRequirements));

kAdditionalStackRequirements is the number of bytes of stack space you’d like above and over the default stack size. Make sure you call this before calling any other routine - before MaxApplZone, MoreMasters, and InitGraf.

If you want to find the existing size of area of memory for the stack, you can get the address of the bottom of the stack (the part that’s highest in memory) from the low-memory global called CurStackBase which is located at $0908. Subtract from this the return value of GetApplLimit, and you get the current size of the area of memory for your stack.

- Mike Scanlin, Mountain View, CA

Excerpt taken from DTS answer

The Easy way to store disks

I have looked far and wide for a way to store hundreds of diskettes. Most of the vendors want big dollars for custom disk holders. They look great in plastic or metal. Holding hundreds of disks though can get very expensive.

I have found that a three-drawer kit can be assembled easily. These kits are found in the hardware section of your local retailer. They are in the place where the furniture is sold for garages and children's rooms.

These drawers are made out of particle board and masonite. Each drawer is 4 1/2" high by 15" deep by 13" wide. I can put in 3 rows or 100 disks per row in these with plenty of room to thumb through the diskettes. That is 300 diskettes per drawer.

They can be assembled even by me or my kids in about 20 minutes. And instead of paying $100's to hold the disks, I have less than $25 into holding 900+ diskettes.

The disk holders are 15" High x 15" wide x 15" deep. They are manufactured by SturdiCraft, 2742 Homdale Rd., Klamath Falls, OR 97603 phone (503) 882-4406. They are available through Fred Meyer, Sears catalog sales, HomeBase and many local hardware stores. Or they are available direct from SturdiCraft for $34.30 including shipping and handling. Ask for Model S-350. Some assembly required.

- Bruce Kyle, Beaverton, Oregon

 

Community Search:
MacTech Search:

Software Updates via MacUpdate

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 »
WRIO Keyboard (Utilities)
WRIO Keyboard 1.0 Device: iOS iPhone Category: Utilities Price: $2.99, Version: 1.0 (iTunes) Description: 40% OFF DURING LIMITED INTRODUCTORY OFFER | Read more »
Hatoful Boyfriend (Games)
Hatoful Boyfriend 1.0 Device: iOS Universal Category: Games Price: $4.99, Version: 1.0 (iTunes) Description: The hit PC game that everybirdie loves has now migrated to your mobile device! Now you are free to explore the wonders of St... | Read more »
Warp Shift (Games)
Warp Shift 1.0 Device: iOS Universal Category: Games Price: $2.99, Version: 1.0 (iTunes) Description: [ CHECK YOUR HARDWARE: Warp Shift does NOT run on iPhone 4, iPad 1 and iPod touch 4G or older devices! It requires at least iOS8... | Read more »
Lifeline: Whiteout (Games)
Lifeline: Whiteout 1.0.2 Device: iOS Universal Category: Games Price: $2.99, Version: 1.0.2 (iTunes) Description: Alone in a frozen wasteland with no memory of how he got there, a lost adventurer’s only hope is his last line of... | Read more »
Castles of Mad King Ludwig (Games)
Castles of Mad King Ludwig 1.0.1 Device: iOS Universal Category: Games Price: $6.99, Version: 1.0.1 (iTunes) Description: | Read more »
How to command and conquer in Raid HQ
Raid HQ is a satisfyingly deep base building game with over-the-top macho action and explosions. This little free to play bundle gives you a lot to do from managing a squad to building the most powerful base you possibly can. [Read more] | Read more »

Price Scanner via MacPrices.net

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
13-inch 2.5GHz MacBook Pro on sale for $999,...
B&H Photo has the 13″ 2.5GHz MacBook Pro on sale for $999 including free shipping plus NY sales tax only. Their price is $100 off MSRP. Read more
Apple refurbished iMacs available for up to $...
Apple has Certified Refurbished 2015 21″ & 27″ iMacs available for up to $350 off MSRP. Apple’s one-year warranty is standard, and shipping is free. The following models are available: - 21″ 3.... Read more

Jobs Board

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
ISCS *Apple* ID Site Support Engineer - APP...
…position, we are looking for an individual who has experience supporting customers with Apple ID issues and enjoys this area of support. This person should be 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
*Apple* Support Technician II - Worldventure...
…global, fast growing member based travel company, is currently sourcing for an Apple Support Technician II to be based in our Plano headquarters. WorldVentures is Read more
All contents are Copyright 1984-2011 by Xplain Corporation. All rights reserved. Theme designed by Icreon.