TweetFollow Us on Twitter

Dec 93 Tips, Tidbits
Volume Number:9
Issue Number:12
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 two 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: Accelerating MPW's Startup Sequence

This trick is described in the Examples folder that comes with MPW. But in talking to other users, I was surprised to find few people know about it, and even fewer use it.

When MPW is launched, it executes a script named “Startup,” which sets up environment variables, aliases, custom menus, and so forth. This can take from several seconds to over a minute.

It is easy to optimize this startup sequence. After launching MPW normally, copy the following lines into the MPW Worksheet window. Then highlight them as a block and press Enter:

/* 1 */

   Rename "{MPW}"Startup "{MPW}"Startup.Old
   Begin
      Set
      Export
      Alias
      AddMenu
   End > "{MPW}"Startup

This creates an optimized Startup script that will typically execute two to ten times faster than the original. The initial “Rename” command saves the original Startup script, so you can revert to it if you decide you don’t like the results. But if you do “before and after” timings, I think you’ll be happy with the speed improvement.

There are a couple of caveats though. First, the optimized Startup script is not organized and commented the same way the original is. If you frequently change your MPW configuration, you might find the optimized script harder to read and edit. Or you might find it to be easier; the point is that it is different.

Second, if you have UserStartup files that are often modified (such as UserStartup•RunMenu, described in MacTech Magazine, October, 1993), you may wish to add a line to the end of the optimized Startup script to forcibly execute the UserStartup commands. With UserStartup•RunMenu as an example, here’s what the command would look like:

        Execute "{PrefsFolder}"UserStartup•RunMenu

In doing this, you will cause some startup commands to be executed more than once (since some commands from the UserStartup will appear in the optimized Startup script as well). As a final “tweak,” you should then edit the optimized Startup script to delete any commands which will be carried out by forcibly executed UserStartup scripts.

- Lee David Rimar, Absoft Corporation

Strings that go both ways

When writing programs in C on the Macintosh, one thing that we need to deal with is the two possible formats of strings: C-style and Pascal-style. To save the repeated conversion time between the two formats, I sometimes use a format I call the two-in-one format that has both at once.

The C-style string uses a terminating zero character (null) at the end of the string to mark it’s length. The Pascal-style string uses a length byte as the first byte of the string (see figure). Both are allocated by allocating the space for the maximum number of characters the string will hold plus one for either the length byte or the termination byte. My two-in-one format uses both a length byte as it’s first byte and the zero byte as it’s last. To allocate this, take the data size and add two for both the Pascal-style length byte and the C-style terminator. The illustration shows how the length byte, string data, and terminator are laid out.

To use this as a Pascal string, simply use it normally. To use it as a C string, pass the string address as string + 1. Of course, if the size of the string is changed, then either the length byte or the terminator will need to adjusted. If you use calls that treat it as a C string, then the length byte will need adjusting. If you use Pascal-style calls, the terminator will need adjusting. The adjusting isn’t always as hard as you might think.

The following code fragment illustrates using the two-in-one string format:

/* 2 */

Str255  stringOne;
char  stringTwo[50];

...
/*   #1 Toolbox call uses Pascal-style string. */
GetIText (dialogItemHandle, stringOne);
stringOne[stringOne[0] + 1] = ’\0’;     // Add term. byte
...
/*   #2 Uses C-style string and returns the num. of characters. */
stringTwo[0] = sprintf (stringTwo + 1, “foobar”);
...
/*   #3 Two-in-one style, notice the length plus two. */
BlockMove (stringOne, stringTwo, stringOne[0] + 2);

In #1, the toolbox call returns a Pascal-style string, so, for the two-in-one format we’ve got to add the terminator. We know that stringOne[0] is the length byte and we know that stringOne[length] is the last byte of data in the string. So, the length plus one is the terminator byte.

In #2, we’re using the string as a C-style string. Notice that the C-style string starts at an offset of one, this avoids the Pascal-style length byte. Fortunately, sprintf returns the number of bytes (characters) written if there’s no error so we can use it to adjust the length byte. Other C library calls like printf, scanf and their derivatives also return the number of characters processed.

In #3, we’re using the Toolbox call BlockMove() to copy a two-in-one format string. Since the length is the length of the data, we’ve got to add two to allow for the length byte and the terminator byte.

I’ve found that judicious use of this string format can save a lot of conversion in string-heavy programs.

- Malcolm Teas

Step-step

In Think Pascal, the option key allows you to “step-step” through the code. Hold down the option key and pull down the RUN menu. You will see the step-step option. Step-step walks through your source code one line at a time, stepping into functions and procedures. It’s like a guided tour through your own program. Hold down the option key and browse through the Think Pascal menus. You may be surprised how much the option key modifies in the menus.

- Lillian Thompson, Reno, Nevada

 

Community Search:
MacTech Search:

Software Updates via MacUpdate

Firefox 37.0 - Fast, safe Web browser. (...
Firefox offers a fast, safe Web browsing experience. Browse quickly, securely, and effortlessly. With its industry-leading features, Firefox is the choice of Web development professionals and casual... Read more
Arq 4.11 - Online backup to Google Drive...
Arq is super-easy online backup for the Mac. Back up to your own Google Drive storage (15GB free storage), your own Amazon Glacier ($.01/GB per month storage) or S3, or any SFTP server. Arq backs up... Read more
MacFamilyTree 7.3.4 - Create and explore...
MacFamilyTree gives genealogy a facelift: it's modern, interactive, incredibly fast, and easy to use. We're convinced that generations of chroniclers would have loved to trade in their genealogy... Read more
Yummy FTP 1.10.2 - FTP/SFTP/FTPS client...
Yummy FTP is an FTP + SFTP + FTPS file transfer client which focuses on speed, reliability and productivity. Whether you need to transfer a few files or a few thousand, schedule automatic backups, or... Read more
VueScan 9.5.08 - Scanner software with a...
VueScan is a scanning program that works with most high-quality flatbed and film scanners to produce scans that have excellent color fidelity and color balance. VueScan is easy to use, and has... Read more
Iridient Developer 3.0.1 - Powerful imag...
Iridient Developer (was RAW Developer) is a powerful image conversion application designed specifically for OS X. Iridient Developer gives advanced photographers total control over every aspect of... Read more
Air Video Server HD 2.1.0 - Stream video...
Air Video Server HD streams videos instantly from your computer on your iPhone, iPad, iPod touch or Apple TV. No need to worry about converting or transferring files. We took everything that was... Read more
Duplicate Annihilator 5.7.5 - Find and d...
Duplicate Annihilator takes on the time-consuming task of comparing the images in your iPhoto library using effective algorithms to make sure that no duplicate escapes. Duplicate Annihilator... Read more
BusyContacts 1.0.2 - Fast, efficient con...
BusyContacts is a contact manager for OS X that makes creating, finding, and managing contacts faster and more efficient. It brings to contact management the same power, flexibility, and sharing... Read more
Capture One Pro 8.2.0.82 - RAW workflow...
Capture One Pro 8 is a professional RAW converter offering you ultimate image quality with accurate colors and incredible detail from more than 300 high-end cameras -- straight out of the box. It... Read more

2K Announces WWE 2K, Mobile's First...
It seems like this month has been pretty big for wrestling. First Wrestlemania, then 2K has announces that they're releasing  WWE 2K for iOS. It's a simulation-based WWE game where you'll get to play with several WWE superstars such as John Cena, ... | Read more »
How the Apple Watch Could Change the Fac...
The Apple Watch is still a ways out, but my previous musings on the wearable’s various features got me thinking: what might it be like a year after launch? Two years? Five years? What if it becomes a symbiotic part of the iOS framework to the point... | Read more »
Pie In The Sky: A Pizza Odyssey (Games)
Pie In The Sky: A Pizza Odyssey 1.0 Device: iOS Universal Category: Games Price: $2.99, Version: 1.0 (iTunes) Description: A game about delivering pizza. In space. | Read more »
Chosen Gives Hopeful Singers, Songwriter...
If YouTube videos and reality TV shows like The Voice have taught us one thing, it’s that there are a lot of people out there who are anxious to show the world their talents. And if they’ve taught us a second thing, it’s that there’s an almost... | Read more »
Android's Popular OfficeSuite Now A...
Once only available for Android devices, OfficeSuite has finally landed on the app store. The Mobile Systems app lets you view, edit, create, and share Word, Excel, and PowerPoint documents as well as convert them to/from PDFs. It's touted as being... | Read more »
Warhammer: Arcane Magic is Coming Soon,...
Turbo Tape Games has announced that they're joining forces with Games Workshop to bring the turn-based strategy board game, Warhammer: Arcane Magic, to life on the iOS. | Read more »
Fast & Furious: Legacy's Creati...
| Read more »
N-Fusion and 505's Ember is Totally...
| Read more »
These are All the Apple Watch Apps and G...
The Apple Watch is less than a month from hitting store shelves, and once you get your hands on it you're probably going to want some apps and games to install. Fear not! We've compiled a list of all the Apple Watch apps and games we've been able to... | Read more »
Appy to Have Known You - Lee Hamlet Look...
Being at 148Apps these past 2 years has been an awesome experience that has taught me a great deal, and working with such a great team has been a privilege. Thank you to Rob Rich, and to both Rob LeFebvre and Jeff Scott before him, for helping me... | Read more »

Price Scanner via MacPrices.net

Adobe Brings Powerful Layout-Design Capabilit...
Adobe today announced the availability of Adobe Comp CC, a free iPad app that enables rapid creation of layout concepts for mobile, Web and print projects. With Comp CC, designers can rough out and... Read more
Apple offering refurbished 27-inch 5K iMacs f...
The Apple Store is offering Apple Certified Refurbished 27″ 3.5GHz 5K iMacs for $2119 including free shipping. Their price is $380 off the price of new models, and it’s the lowest price available for... Read more
16GB iPad mini on sale for $199, save $50
Walmart has 16GB iPad minis (1st generation) available for $199.99 on their online store, including free shipping. Their price is $50 off MSRP. Online orders only. Read more
New 128GB MacBook Airs on sale for $50 off MS...
 B&H Photo has 128GB 11″ and 13″ 2015 MacBook Airs on sale today for $50 off MSRP including free shipping plus NY sales tax only: - 11″ 1.6GHz/128GB MacBook Air (Model #MJVM2LL/A): $849 $50 off... Read more
13-inch 2.6GHz Retina MacBook Pro (refurbishe...
The Apple Store has Apple Certified Refurbished 13″ 2.6GHz/128GB Retina MacBook Pros available for $979 including free shipping. Original MSRP for this model was $1299. Read more
Save up to $600 with Apple refurbished Mac Pr...
The Apple Store is offering Apple Certified Refurbished Mac Pros for up to $600 off the cost of new models. An Apple one-year warranty is included with each Mac Pro, and shipping is free. The... Read more
Samsung Galaxy S 6 and Galaxy S 6 edge U.S. P...
Samsung Electronics America, Inc. has announced the Galaxy S 6 and Galaxy S 6 edge will be available in the U.S. beginning April 10, with pre-orders being accepted now. “We have completely reimagined... Read more
13-inch 2.5GHz MacBook Pro (refurbished) avai...
The Apple Store has Apple Certified Refurbished 13″ 2.5GHz MacBook Pros available for $829, or $270 off the cost of new models. Apple’s one-year warranty is standard, and shipping is free: - 13″ 2.... Read more
Save up to $80 on iPad Air 2s, NY tax only, f...
 B&H Photo has iPad Air 2s on sale for $80 off MSRP including free shipping plus NY sales tax only: - 16GB iPad Air 2 WiFi: $469.99 $30 off - 64GB iPad Air 2 WiFi: $549.99 $50 off - 128GB iPad... Read more
iMacs on sale for up to $205 off MSRP
B&H Photo has 21″ and 27″ iMacs on sale for up to $205 off MSRP including free shipping plus NY sales tax only: - 21″ 1.4GHz iMac: $1019 $80 off - 21″ 2.7GHz iMac: $1189 $110 off - 21″ 2.9GHz... Read more

Jobs Board

DevOps Software Engineer - *Apple* Pay, iOS...
**Job Summary** Imagine what you could do here. At Apple , great ideas have a way of becoming great products, services, and customer experiences very quickly. Bring Read more
*Apple* Retail - Multiple Positions (US) - A...
Sales Specialist - Retail Customer Service and Sales Transform Apple Store visitors into loyal Apple customers. When customers enter the store, you're also the Read more
Sr. Technical Services Consultant, *Apple*...
**Job Summary** Apple Professional Services (APS) has an opening for a senior technical position that contributes to Apple 's efforts for strategic and transactional Read more
Lead *Apple* Solutions Consultant - Retail...
**Job Summary** Job Summary The Lead ASC is an Apple employee who serves as the Apple business manager and influencer in a hyper-business critical Reseller's store Read more
*Apple* Pay - Site Reliability Engineer - Ap...
**Job Summary** Imagine what you could do here. At Apple , great ideas have a way of becoming great products, services, and customer experiences very quickly. Bring Read more
All contents are Copyright 1984-2011 by Xplain Corporation. All rights reserved. Theme designed by Icreon.