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.

 
AAPL
$119.00
Apple Inc.
+1.40
MSFT
$47.75
Microsoft Corpora
+0.28
GOOG
$540.37
Google Inc.
-0.71

MacTech Search:
Community Search:

Software Updates via MacUpdate

Skype 7.2.0.412 - Voice-over-internet ph...
Skype allows you to talk to friends, family and co-workers across the Internet without the inconvenience of long distance telephone charges. Using peer-to-peer data transmission technology, Skype... Read more
HoudahSpot 3.9.6 - Advanced file search...
HoudahSpot is a powerful file search tool built upon MacOS X Spotlight. Spotlight unleashed Create detailed queries to locate the exact file you need Narrow down searches. Zero in on files Save... Read more
RapidWeaver 6.0.3 - Create template-base...
RapidWeaver is a next-generation Web design application to help you easily create professional-looking Web sites in minutes. No knowledge of complex code is required, RapidWeaver will take care of... Read more
iPhoto Library Manager 4.1.10 - Manage m...
iPhoto Library Manager lets you organize your photos into multiple iPhoto libraries. Separate your high school and college photos from your latest summer vacation pictures. Or keep some photo... Read more
iExplorer 3.5.1.9 - View and transfer al...
iExplorer is an iPhone browser for Mac lets you view the files on your iOS device. By using a drag and drop interface, you can quickly copy files and folders between your Mac and your iPhone or... Read more
MacUpdate Desktop 6.0.3 - Discover and i...
MacUpdate Desktop 6 brings seamless 1-click installs and version updates to your Mac. With a free MacUpdate account and MacUpdate Desktop 6, Mac users can now install almost any Mac app on macupdate.... Read more
SteerMouse 4.2.2 - Powerful third-party...
SteerMouse is an advanced driver for USB and Bluetooth mice. It also supports Apple Mighty Mouse very well. SteerMouse can assign various functions to buttons that Apple's software does not allow,... Read more
iMazing 1.1 - Complete iOS device manage...
iMazing (was DiskAid) is the ultimate iOS device manager with capabilities far beyond what iTunes offers. With iMazing and your iOS device (iPhone, iPad, or iPod), you can: Copy music to and from... Read more
PopChar X 7.0 - Floating window shows av...
PopChar X helps you get the most out of your font collection. With its crystal-clear interface, PopChar X provides a frustration-free way to access any font's special characters. Expanded... Read more
OneNote 15.4 - Free digital notebook fro...
OneNote is your very own digital notebook. With OneNote, you can capture that flash of genius, that moment of inspiration, or that list of errands that's too important to forget. Whether you're at... Read more

Latest Forum Discussions

See All

Raby (Games)
Raby 1.0.3 Device: iOS Universal Category: Games Price: $2.99, Version: 1.0.3 (iTunes) Description: ***WARNING - Raby runs on: iPhone 5, iPhone 5C, iPhone 5S, iPhone 6, iPhone 6 Plus, iPad Mini Retina, iPad Mini 3, iPad 4, iPad Air,... | Read more »
Oddworld: Stranger's Wrath (Games)
Oddworld: Stranger's Wrath 1.0 Device: iOS Universal Category: Games Price: $5.99, Version: 1.0 (iTunes) Description: ** PLEASE NOTE: Oddworld Stranger's Wrath requires at least an iPhone 4S, iPad 2, iPad Mini or iPod Touch 5th gen... | Read more »
Bounce On Back (Games)
Bounce On Back 1.0 Device: iOS Universal Category: Games Price: $2.99, Version: 1.0 (iTunes) Description: | Read more »
Dwelp (Games)
Dwelp 1.0 Device: iOS Universal Category: Games Price: $.99, Version: 1.0 (iTunes) Description: === 50% off for a limited time, to celebrate release === Dwelp is an elegant little puzzler with a brand new game mechanic. To complete a... | Read more »
Make Way for Fat Chicken, from the Maker...
Make Way for Fat Chicken, from the Makers of Scrap Squad Posted by Jessica Fisher on November 26th, 2014 [ permalink ] Relevant Games has announced they will be releasing their reverse tower defense game, | Read more »
Tripnary Review
Tripnary Review By Jennifer Allen on November 26th, 2014 Our Rating: :: TRAVEL BUCKET LISTiPhone App - Designed for the iPhone, compatible with the iPad Want to create a travel bucket list? Tripnary is a fun way to do exactly that... | Read more »
Ossian Studios’ RPG, The Shadow Sun, is...
Ossian Studios’ RPG, The Shadow Sun, is Now Available for $4.99 Posted by Jessica Fisher on November 26th, 2014 [ permalink ] Universal App - Designed for iPhone and iPad | Read more »
Mmmm, Tasty – Having the Angry Birds for...
The very first Angry Birds debuted on iOS back in 2009. When you sit back and tally up the number of Angry Birds games out there and the impact they’ve had on pop culture as a whole, you just need to ask yourself: “How would the birds taste... | Read more »
Rescue Quest Review
Rescue Quest Review By Jennifer Allen on November 26th, 2014 Our Rating: :: PATH BASED MATCH-3Universal App - Designed for iPhone and iPad Guide a wizard to safety by matching gems. Rescue Quest might not be an entirely original... | Read more »
You Can Play the Final Chapter of Lone W...
You Can Play the Final Chapter of Lone Wolf: Dawn Over V’taag Right Now Posted by Jessica Fisher on November 26th, 2014 [ permalink ] Universal App - Designed for iPhone and iPad | Read more »

Price Scanner via MacPrices.net

BEVL Releases Dock Tailored for iPhone 6 and...
Seattle based BEVL has released their first product: an iPhone dock that is divergent in build quality, rock-solid function and visual simplicity to complement the iPhone. BEVL is now accepting... Read more
Black Friday: $150 off 13-inch Retina MacBook...
 Best Buy has 13-inch 2.6GHz Retina MacBook Pros on sale for $150 off MSRP on their online store as part of their Black Friday sale. Choose free shipping or free local store pickup (if available).... Read more
Black Friday: $300 off 15-inch Retina MacBook...
 B&H Photo has the new 2014 15″ Retina MacBook Pros on sale for $300 off MSRP as part of their Black Friday sale. Shipping is free, and B&H charges NY sales tax only: - 15″ 2.2GHz Retina... Read more
Black Friday: Up to $140 off MacBook Airs, fr...
 B&H Photo has 2014 MacBook Airs on sale for up to $140 off MSRP as part of their Black Friday sale. Shipping is free, and B&H charges NY sales tax only: - 11″ 128GB MacBook Air: $799 $100... Read more
Black Friday: 13-inch 2.5GHz MacBook Pro on s...
 Best Buy has the 13″ 2.5GHz MacBook Pro on sale for $899.99 on their online store as part of their Black Friday sale. Choose free shipping or free instant local store pickup (if available). Their... Read more
2014 1.4GHz Mac mini on sale for $449, save $...
 B&H Photo has the new 1.4GHz Mac mini on sale for $449.99 including free shipping plus NY tax only. Their price is $50 off MSRP, and it’s the lowest price available for this new model. Adorama... Read more
Early Black Friday pricing on 27-inch 5K iMac...
 B&H Photo continues to offer Black Friday sale prices on the 27″ 3.5GHz 5K iMac, in stock today and on sale for $2299 including free shipping plus NY sales tax only. Their price is $200 off MSRP... Read more
Early Black Friday sale prices on iPad Air 2,...
 MacMall is discounting iPad Air 2s by up to $75 off MSRP as part of their Black Friday sale. Shipping is free: - 16GB iPad Air WiFi: $459 $40 off - 64GB iPad Air WiFi: $559 $40 off - 128GB iPad Air... Read more
Early Black Friday MacBook Air sale prices, $...
 MacMall has posted early Black Friday MacBook Air sale prices. Save $101 on all models for a limited time: - 11″ 1.4GHz/128GB MacBook Air: $798 - 11″ 1.4GHz/256GB MacBook Air: $998 - 13″ 1.4GHz/... Read more
Why iPhone 6 Tablet/Laptop Cannibalization Is...
247wallst.com blogger Douglas A. McIntyre noted last week that according to research posted on the Applovin blog site the iPhone 6 is outselling the iPhone 6 Plus by a wide margin . Hardly a surprise... Read more

Jobs Board

*Apple* Solutions Consultant (ASC) - Apple (...
**Job Summary** The ASC is an Apple employee who serves as an Apple brand ambassador and influencer in a Reseller's store. The ASC's role is to grow Apple Read more
Senior Event Manager, *Apple* Retail Market...
…This senior level position is responsible for leading and imagining the Apple Retail Team's global event strategy. Delivering an overarching brand story; in-store, 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
*Apple* Solutions Consultant (ASC) - Apple (...
**Job Summary** The ASC is an Apple employee who serves as an Apple brand ambassador and influencer in a Reseller's store. The ASC's role is to grow Apple Read more
*Apple* Solutions Consultant (ASC) - Apple (...
**Job Summary** The ASC is an Apple employee who serves as an Apple brand ambassador and influencer in a Reseller's store. The ASC's role is to grow Apple Read more
All contents are Copyright 1984-2011 by Xplain Corporation. All rights reserved. Theme designed by Icreon.