TweetFollow Us on Twitter

Jan 96 Top 10
Volume Number:12
Issue Number:1
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 Michael Hopkins, Symantec

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

Q: I want to be able to add files to my project, such as ReadMe files and notes, without having the project manager attempt to compile them. Is there any way to create an extension such as a .note extension in the SPM that does not use a translator?

A: Yes, there is. Quit the SPM and open your Symantec C++ folder. Copy the file «none» from your Translators folder (the one with the THINK Project Manager icon) to your (Translators) folder (the one with the Symantec Project Manager icon). With ResEdit, open the copy and choose Get Info for «none» from the File menu. Change the creator from KAHL to None. Save the file, and quit ResEdit. Now go back and launch your project in the Symantec Project Manager and choose Options from the Project menu and go to the Extensions page. Type the name of the extension that you want to use for your non-compiled source files in the File Extension edit text box. Choose «none» from the Translator popup menu, click the Add button and then click the Save button.

Adding .note to the File Extensions List

Q: When I run my program with the Symantec Debugger from the Symantec Project Manager, the source code window does not come up and the debugger palette buttons Go, Step, In, etc. are not active. What is causing this, and how can I fix it?

A: This behavior is a result of your application being compiled with incorrect 'SIZE' flags. The debugger requires that your project has Background Null Events and MultiFinder Aware checked on the Flags popup menu in the Project Type page of the Project Options dialog. Without these flags, Power Mac DebugServices will not be able to communicate with your application.

Q: I have written a brief program in the THINK Project Manager that is crashing my machine big time. The code is as follows:

typedef struct {
 int a, b;
} Foo, *FooPtr;

main()
{
 FooPtr foobuf;
 int i, size = 100;

 foobuf = (FooPtr) malloc( size*sizeof(Foo) );
 if (foobuf == NULL)
 exit(0);
 for ( i = 0; i < size; i++ )
 {
 foobuf[i].a = 0;
 foobuf.b = 0;
 }
}

Why is this causing me so much trouble? Is something wrong with malloc?

A: No, malloc is not at fault. By not including <stdio.h> and <stdlib.h>, your compiler does not have a function prototype for malloc, so it is guessing (incorrectly) about the size of the argument to malloc. Instead of using the type size_t, it is assuming an int. To avoid this problem, always choose Require Prototypes on the Language Settings page of your THINK C Options dialog. With that option selected, this would have resulted in a compilation error instead of a runtime error.

Q: Can I use Quickdraw GX with TCL and VA?

A: Yes, it is possible. For starters, initialize Quickdraw GX in CApp::ICApp() in the following manner:


void  CApp::ICApp()
{
 Ix_CApp(4, 24000L, 20480L, 2048L);
 
    // Initialize your own application data here.

 long graphicsHeapSize = 375; // about 25K

 theGXClient = GXNewGraphicsClient( nil, gGraphicsHeapSize *   1024L, 
0L );
 FailNIL( theGXClient );
 GXEnterGraphics();
 
 assert (GXGetGraphicsError( nil ) !=  out_of_memory);   
 // etc.
}

You will need to declare theGXClient as a member function of CApp of type gxGraphicsClient and include the proper header files in CApp.cp. Additionally, it is a good idea to override CApplication::InspectSystem() to check for the presence of QuickDraw GX. It is considered programmer error to call GX routines without verifying via Gestalt() that GX is present. Finally, override CApplication::Exit() in CApp using the following example:

 void CApp::Exit( )
 {
 GXExitGraphics();
 GXDisposeGraphicsClient( myGXClient );
    // etc...
 x_CApp::Exit();
 }

Q: Why does printf crash when I use it in a TCL project? Is there any way to use TCL in conjunction with the console?

A: Yes, there is. The console package does some special initialization that needs to be done in place of the standard toolbox initialization that TCL does. To use the console with TCL, you should override CApplication::InitToolbox(), like this:

 void CApp::InitToolbox( void )
 {
 cout<< "Initialize console package"<<endl;
 }

The call to cout in place of the standard CApplication::InitToolbox() will initialize the toolbox and the console package. This will enable the use of printf and iostreams routines with the console window. Note: You will need to add the IOStreams library and replace ANSI_small with ANSI.

Q: How do I make an application (or the Project Manager) multi-session, so I can throw it on a server and have several users run the application off of the server at the same time?

A: Use ResEdit to open the application you want to share. From the File menu, choose Get File Info for the application, and click the Sharable flag. Save the application, and Quit ResEdit. Your application can now be used by multiple users simultaneously.

Q: I am working on an application that prompts the user for a password. I need to be able to filter the edit text so that it displays bullet characters instead of the actual password. Is there an easy way to do this in VA?

Example of an Application that uses a Password Edit Text Filter

A: Yes. You must first create a derived class from CDialogText in VA. Then override the DoKeyDown() method in the following manner:

void  cPasswordText::DoKeyDown( char theChar, Byte keyCode,
   EventRecord *macEvent )
{
 Boolean pass = TRUE;
 short  ID;
 Str255 textString;

 switch (theChar)
 {
 case TCL_CR:
 case '\t':
 case kEnterKey:
 pass = FALSE;
 break;
 case kEscapeOrClear:
 if (keyCode == KeyEscape) pass = FALSE;
 break;
 default:
 GetTextString( textString );
 if ( !  isalnum( theChar ))// pass spaces and delete keys
 {
 inherited::DoKeyDown( theChar, keyCode, macEvent );
 pass = false;
 } 
 }
 if (pass)
 {
 textString[0]++;
 textString[textString[0]] = ‘•’;
 SetTextString( textString );
 
// add code to store actual characters typed here

 if (itsTypingTask && itsTypingTask->CanStillType())
 {
 ID = this->ID;
 BroadcastChange(dialogTextChanged, &ID);
 }
 }
 else
 itsSupervisor->DoKeyDown(theChar, keyCode, macEvent);
}

Q: Can I use STL with Symantec C++?

A: Yes, Symantec C++ supports a modified version of STL. For best results, you need to use 8.0.3 of our Symantec C++ compiler. Patches are available via anonymous ftp at ftp://devtools.symantec.com/updaters/sym.cpp-va-tcl.update.

Q: I’m using your new Pascal Universal Headers for THINK Pascal and I get pages of link errors. Why is this?

A: When you use our Universal Headers, you need to make sure that you have the proper uses statements for the toolbox routines that you are using. You can no longer rely on the correct uses being used automatically. You will need to be very conscious of which interface file you use. See the Readme for further details.

Q: I call the Place() method of a CPanorama object I have created in the Main view using VA, but nothing happens. Place() works fine for other objects derrived from CPane. What gives?

A: Place(), inherited from CPane, sets the data members hEncl and vEncl, which indicate the pane’s position relative to itsEnclosure. In the case of CIconButton, for instance, itsEnclosure will be the itsMainPane member of the Document (itsMainPane is the CPanorama object that acts as the background of every view of type Main Window). Hence, calling the Place() member of a CIconButton visibly moves the button relative to the window. In the case of a CPanorama object however, itsEnclosure is actually itsScrollPane. A panorama’s Place() function will not visibly change its postion. You should instead call itsScrollPane-> Place() to move a panorama relative to the window.

If you have a question or topic for a future Top Ten article, please send us your ideas. If you have found an answer to an obscure problem that has been eluding you, or you have a stumper, send it to topten@devtools.symantec.com. If we choose to use your question in our column, your submission will be immortalized in print, and we will mail you a cool Symantec T-shirt.

Special thanks to: Glenn Austin, Mark Baldwin, Levi Brown, Craig Conner, Andy McFarland, Christopher Prinos, and Kevin Quah.

 
AAPL
$565.32
Apple Inc.
-5.24
MSFT
$29.07
Microsoft Corpora
-0.04
GOOG
$603.66
Google Inc.
-5.80
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

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
MAC Imaging/Packaging, Administration.Pr...
Skills: Very good experience in building MAC ( Apple Macintosh ) operating system images. OS imaging Knowledge on ... Knowledge on configuring the LAN and Wireless network on MAC note books Knowledge... Read more
*Apple* Solutions Consultant-Retail Sal...
Requisition Number 15545402 Job title Apple Solutions Consultant-Retail Sales Location Mobile Country United States City Mobile State Alabama Job type Job description Read more
iPhone Developer at Mastech (Los Angeles...
We are currently seeking an Android/ iPhone Developer for our client in the Insurance domain. We value our professionals, providing comprehensive benefits, exciting challenges, and the opportunity... Read more
24 funny 2d Charaters for iPhone game. a...
We are developing an iPhone game and desire to have 24 characters drawn to our specification. Attached is the detailed spec. Desired Skills: Cartoon, Illustration Read more
All contents are Copyright 1984-2011 by Xplain Corporation. All rights reserved. Theme designed by Icreon.