TweetFollow Us on Twitter

Nov 95 Top 10
Volume Number:11
Issue Number:11
Column Tag:Symantec Top 10

Symantec Top 10

This monthly column, written by Symantec’s Technical Support Engineers, aims _to provide you with technical information based on the use of Symantec products.

By Levi Brown, Symantec Corp.

Note: Source code files accompanying article are located on MacTech CD-ROM or source code disks.

Q: I set my project’s preferred and minimum memory partition sizes in the “Project Type” window, but when I build my application, the preferred and minimum memory partition sizes are always set to a different value. What is wrong?

A: The project’s resource file contains a SIZE resource that always overrides the value set under the Project, Options..., “Project Type” window. To solve this problem, open the ProjectName.rsrc resource file with ResEdit and delete the SIZE resource.

Q: I have heard of this program called Discipline that works with MacsBug to provide a higher level of error checking. What does it do, and does it work with the Symantec Debugger?

A: Discipline is a system extension that works with MacsBug to check the arguments passed to Toolbox routines. Discipline is built into MacsBug 6.5d12. To access it, you use the dcmd dizy.

Our debugger has not been tested thoroughly with Discipline. Therefore, it is possible that you may run into some incompatibilities. Discipline has a habit of revealing problems with many different programs including the Finder, which makes it difficult to use as a debugging tool.

Q: In UNIX there is a collection of routines, declared in curses.h that can be used to manipulate the cursor in a console-like display. In my Symantec C++ 8.0 project using the console window how can I achieve similar results?

A: Most of the functionality of the console window is declared in console.h. Here is an example of how to move the cursor to a specific point, and clear everything in the window from that point down.

#include <stdio.h>
#include <console.h> 

main()
{
 int i, ch, rows = 12, cols = 40;

 console_options.nrows = rows;
 console_options.ncols = cols;
 cshow( stdout );
 csetmode( C_NOECHO, stdout );
    // Set mode to C_NOECHO, so
    // getchar doesn’t move the
    // cursor.
 for( i=0; i<rows*cols; i++ )
 putchar( 'x' );
 cgotoxy( 5, 3, stdout );
 ch = getchar();
 ccleos( stdout );
}

Before the call to ccleos()

After the call to ccleos()

Q: I’m using the ToolBox call GetPicture() and I want to clean up the memory after I am done with the picture. How do I do that?

A: Pass the handle that GetPicture() returns to ReleaseResource(). Do not call DisposeHandle() on a handle to a resource or you may corrupt the resource map.

Q: When I try to use the QuickDraw global variables in my Symantec C++ 8.0 project I get undefined symbol errors. I’ve used the same globals many times before using 7.0 and it worked just fine. What is happening here?

A: With the introduction of Apple’s Universal Headers, access to the QuickDraw globals changed. Your 7.0 project was probably referring to the QuickDraw globals in the “old” style and using the original header files, not the Universal Headers. You will need to access the QuickDraw globals through the qd struct, defined in Quickdraw.h. i.e.:

CopyRgn(thePort->visRgn, thePort->clipRgn);

would become

CopyRgn(qd.thePort->visRgn, qd.thePort->clipRgn);

Q: I have a large 8.0 project with many files and I frequently use the Find... command under the Search menu. Every time I use it I have to set up the find parameters each time. Is there a way to set default search parameters?

A: Yes! In your Symantec C++ folder there is a folder called (Scripts), inside which you will find a compiled script called Startup:

tell application "Symantec Project Manager"
 -- Set the default search state.
 set user search state to ¬
 {wrap around:true, ¬
  ignore case:true, ¬
  files to search:only sources, ¬
  exclude system:true, ¬
  exclude precompiled header:true}
end tell

You can set the default parameters for the find in the indexed list shown above.

Q: I get link errors with a class that has static data members. Why is this?

A: If you declare a class with static data members you need to initialize those data members in the global data space outside the class, so that memory is allocated for them. If you do not initialize the static variables in global data space outside the class then the compiler does not have a location for the static data members in memory. Thus, you get a link error when you attempt to access that variable. Example:

class A
{
public:
 static short x;
 static char  y;

 char z;
};

short A::x = 0;  // Note: These variables are initialized
char  A::y = 'a';// outside the class declaration in
    // order to allocate memory for them.

Q: The following code used to work (up through 8.0), but in 8.0.1 it doesn’t. Why?

class A
{
 friend class B;
public:
 A();
 ~A();
 B *GetFriend(int index);
};

class B
{
public:
 B();
 ~B();
 int index;
};

I get an error on line 7 “semicolon expected”. If I put friend before B *GetFriend(int index), it works. Is it a compiler bug, or is it a new ANSI rule of some kind that I didn’t know about?

A: A couple things are happening here:

First, the code above compiled in previous versions due to a compiler bug. 8.0.1 corrects this error. Basically, the syntax is wrong. The class A has no idea what B is yet, and thus the compiler complains. If you put a forward declaration, class B;, in front of the declaration of A this will compile fine.

Second, the statement friend B *GetFriend(int index) tells the compiler that GetFriend is a friend function, and therefore has access to A’s protected and private members. The statement B *GetFriend(int index) tells the compiler that GetFriend is a member function of A. In both cases the friend class B does nothing more than allow all members of B access to A’s private and protected members.

Q: I have made a floating window view in Visual Architect, but when I go to attach it to a command, it does not appear in the list of views to open. How do I open it?

A: When you make a floating window view, VA derives a class from CFloatDirector; we will call it CMyFloatingWindow. You need to call OpenWind() to make the window appear (ShowWind() only undoes a HideWind()). The easiest way is to call it from within CMyFloatingWindow::MakeNewWindow(), right after the object is created; the window will appear immediately upon launch. To have it open from a command (i.e. menu or button), create the command by choosing Commands... from the Edit menu in VA. Enter the name for your command (e.g. cmdOpenMyFWindow), choose CApp from the In Class: popup menu and choose Call from the Do: popup menu.

Next, attach the command to the menu or button. If attaching to a menu: choose Menus... from the Edit menu, select the menu, click on Edit Menu Items, select the item and choose the command you created from the Command: popup menu. If attaching to a button: select the button in VA, get Pane Info from the Pane menu, open the CButton triangle and choose the command you created from the Command: popup menu.

Visual Architect will generate an empty function, DocmdOpenMyFWindow inside x_CApp.cp. Call OpenWind() from here.

Note: Calling from outside the CMyFloatingWindow requires that you have a pointer to the CMyFloatingWindow object. You can find this declared as a global in x_CApp.cp in the form:

 extern CAFloatingWindow  *gCAFloatingWindow; 

If you wish to make the call to OpenWind() from someplace other than x_CApp.cp, you must redeclare it (as above) and #include CMyFloatingWindow.h in the file where you want to use it.

Q: When I try to run the Symantec Debugger it quits with an error that says, “DebugServices cannot set trace bit.” How do I set the trace bit? I can’t find any options to set a trace bit in any of the project option debugging screens.

A: Most likely, you are running a Pre-System 7.5 operating system. You will need to put the items that are in the Pre-System 7.5 Additions folder into your system folder. The Pre-System 7.5 Additions folder is found in the Apple Software folder on your Symantec C++ 8.0 CD-ROM.

Bonus:

Q: I’m porting my code from 7.0.x to 8.0 and I get an “undefined symbol MBarHeight” when I try to compile. Why do I get a linker error?

A: With the introduction of Apple’s Universal Headers you can no longer access the variable MBarHeight directly. You will need to include LowMem.h and use LMGetMBarHeight(), and LMSetMBarHeight(), to access menu bar height. Access to other low memory variables has been changed in similar ways, so it’s a good idea to look in LowMem.h if you plan on using low memory variables.

Special Thanks To:

Glenn Austin, Mark Baldwin, Craig Conner, Rick Hartmann, Michael Hopkins, Steve Howard, Noah Lieberman, Andy McFarland, Chris Prinos, and Kevin Quah.

 

Community Search:
MacTech Search:

Software Updates via MacUpdate

Evernote 6.9.1 - Create searchable notes...
Evernote allows you to easily capture information in any environment using whatever device or platform you find most convenient, and makes this information accessible and searchable at anytime, from... Read more
jAlbum Pro 13.5 - Organize your digital...
jAlbum Pro has all the features you love in jAlbum, but comes with a commercial license. You can create gorgeous custom photo galleries for the Web without writing a line of code! Beginner-friendly... Read more
jAlbum 13.5 - Create custom photo galler...
With jAlbum, you can create gorgeous custom photo galleries for the Web without writing a line of code! Beginner-friendly, with pro results - Simply drag and drop photos into groups, choose a design... Read more
Google Chrome 53.0.2785.143 - Modern and...
Google Chrome is a Web browser by Google, created to be a modern platform for Web pages and applications. It utilizes very fast loading of Web pages and has a V8 engine, which is a custom built... Read more
Chromium 53.0.2785.143 - Fast and stable...
Chromium is an open-source browser project that aims to build a safer, faster, and more stable way for all Internet users to experience the web. Version 53.0.2785.143: [Security Fix] High CVE-2016-... Read more
QuickBooks 2015 16.1.7.1524 R8 - Financi...
Save 20% on QuickBooks Pro for Mac today through this special discount link QuickBooks 2015 helps you manage your business easily and efficiently. Organize your finances all in one place, track... Read more
Sierra Cache Cleaner 11.0.1 - Clear cach...
Sierra Cache Cleaner is an award-winning general purpose tool for macOS X. SCC makes system maintenance simple with an easy point-and-click interface to many macOS X functions. Novice and expert... Read more
Default Folder X 5.0.7 - Enhances Open a...
Default Folder X attaches a toolbar to the right side of the Open and Save dialogs in any OS X-native application. The toolbar gives you fast access to various folders and commands. You just click on... Read more
Safari Technology Preview 10.1 - The new...
Safari Technology Preview contains the most recent additions and improvements to WebKit and the latest advances in Safari web technologies. And once installed, you will receive notifications of... Read more
Tweetbot 2.4.4 - Popular Twitter client.
Tweetbot is a full-featured OS X Twitter client with a lot of personality. Whether it's the meticulously-crafted interface, sounds and animation, or features like multiple timelines and column views... Read more

Pumped BMX 3: Beginner tips and tricks
There’s a whole lot more to Pumped BMX 3 than meets the eye. Your goal is to perform a wide array of sweet flips and tricks, but that’s easier said than done. It takes well practiced timing and coordination, and the game doesn’t really explain that... | Read more »
Cybird’s latest release - BFB Champions...
Launched in the UK in early September, BFB Champions’ newest update is loaded with great new features, and looks set to outshine the original version by taking it out of soft launch and giving it a new lease of life. | Read more »
3 apps to boost your focus
As someone who works from home, my workspace is a minefield of distraction. Cats, tasty snacks, the wind blowing past my window, that cleaning that I suddenly can’t put off any longer. If I let distraction takes its course, I find that soon half... | Read more »
Pumped BMX 3 (Games)
Pumped BMX 3 1.0 Device: iOS Universal Category: Games Price: $3.99, Version: 1.0 (iTunes) Description: The final instalment of the smash hit #1 rated BMX game is here! Following on from the insane success of Pumped BMX 2, Pumped 3... | Read more »
4 games like Burly Men at Sea to inspire...
Burly Men at Sea is out today and it looks a treat. It tells the tale of three Scandinavian fishermen who leave the humdrum of their daily lives to go exploring. It’s a beautiful folksy story that unfurls as you interact with the environment... | Read more »
3 reasons you need to play Kingdom: New...
Developed by a tag team of indie developers - Thomas "Noio" van den Berg and Marco "Licorice" Bancale - Kingdom is a vibrant medieval fantasy adventure that casts players as a king or queen who must expand their empire by exploring the vasts lands... | Read more »
JoyCity have launched a brand new King o...
Great news for all of you Game of Dice fans out there - JoyCity have just released a brand new limited edition pack with a really cool twist. The premise of Game of Dice is fairly straightforward, asking you to roll dice to navigate your way around... | Read more »
Burly Men at Sea (Games)
Burly Men at Sea 1.0 Device: iOS Universal Category: Games Price: $4.99, Version: 1.0 (iTunes) Description: Burly Men at Sea is a folktale about a trio of large, bearded fishermen who step away from the ordinary to seek adventure. | Read more »
3 tips for catching the gnarliest waves...
Like a wave breaking on the shore, Tidal Rider swept its way onto the App Store charts this week settling firmly in the top 10. It’s a one-touch high score-chaser in which you pull surfing stunts while dodging seagulls and collecting coins. The... | Read more »
The beginner's guide to destroying...
Age of Heroes: Conquest is 5th Planet Games’ all new turn-based multiplayer RPG, full of fantasy exploration, guild building, and treasure hunting. It’s pretty user-friendly as far as these games go, but when you really get down to it, you’ll find... | Read more »

Price Scanner via MacPrices.net

CAZE Annouces New Zero 5 Case for Jet Black i...
Hong Kong basd CAZE has announced Zero 5 case for iPhone 7/ 7 Plus, one of the world’s thinnest clear hard cases, measuring just 0.5 millimeters. CAZE has been producing and improving the Zero 5... Read more
Nest Egg Inventory App for iOS Offers Conven...
Campbell, California based Winprogger LLC has announced the release and immediate availability of Nest Egg – Inventory 4.1.22, an important update to their easy-to-use, yet comprehensive inventory... Read more
Factor4, LLC Launches Apple iOS and Android G...
Factor4, LLC, which offers gift and loyalty services to the SMB marketplace, has released free mobile applications that enable merchants to process via all Apple and Android devices. The Apple and... Read more
15-inch Retina MacBook Pros on sale for $200...
B&H Photo has 15″ Retina Apple MacBook Pros on sale for $200 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
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
Check Apple prices on any device with the iTr...
MacPrices is proud to offer readers a free iOS app (iPhones, iPads, & iPod touch) and Android app (Google Play and Amazon App Store) called iTracx, which allows you to glance at today’s lowest... Read more
Apple price trackers, updated continuously
Scan our Apple Price Trackers for the latest information on sales, bundles, and availability on systems from Apple’s authorized internet/catalog resellers. We update the trackers continuously: - 15″... Read more
Apple refurbished 2016 13-inch MacBook Airs a...
Apple has Certified Refurbished 2016 13″ MacBook Airs available starting at $849. An Apple one-year warranty is included with each MacBook, and shipping is free: - 2016 13″ 1.6GHz/8GB/128GB MacBook... Read more
1.4GHz Mac mini on sale for $449, save $50
Adorama has the 1.4GHz Mac mini on sale for $50 off MSRP including free shipping plus NY & NJ sales tax only: - 1.4GHz Mac mini (Apple sku# MGEM2LL/A): $449 $50 off MSRP To purchase a mini at... Read more
Apple refurbished 2015 13-inch MacBook Airs a...
Apple has Certified Refurbished 2015 13″ MacBook Airs available starting at $759. An Apple one-year warranty is included with each MacBook, and shipping is free: - 2015 13″ 1.6GHz/4GB/128GB MacBook... Read more

Jobs Board

US- *Apple* Store Leader Program - Apple (Un...
…Summary Learn and grow as you explore the art of leadership at the Apple Store. You'll master our retail business inside and out through training, hands-on 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
Restaurant Manager (Neighborhood Captain) - A...
…in every aspect of daily operation. WHY YOU'LL LIKE IT: You'll be the Big Apple . You'll solve problems. You'll get to show your ability to handle the stress and Read more
*Apple* Wireless Lead - T-ROC - The Retail O...
…wealth of knowledge in wireless sales and activations to the Beautiful and NEW APPLE Experience store within MACYS.. THIS role, APPLE Wireless Lead, isbrandnewas Read more
Lead *Apple* Advocate - T-ROC - The Retail...
…Company, is proud of its unprecedented relationship with our partner and client, APPLE ,in bringing amazing" APPLE ADVOCATES"to "non" Apple store locations. Read more
All contents are Copyright 1984-2011 by Xplain Corporation. All rights reserved. Theme designed by Icreon.