You r not doing type cast, which may work in C but is required in C++.
Simply change the following changes :
1)
 Change :
    fldP = FrmGetObjectPtr(FrmGetActiveForm(),
    FrmGetObjectIndex(FrmGetActiveForm(), UpdateNumberField));
 To :
    fldP = (FieldType *)FrmGetObjectPtr(FrmGetActiveForm(),
    FrmGetObjectIndex(FrmGetActiveForm(), UpdateNumberField));

2)
 Change :
        StrCopy( MemHandleLock( txtH ), String );
 To :
        StrCopy( (char *) MemHandleLock( txtH ), String );

thats all.
-----Original Message-----
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED]]On Behalf Of
[EMAIL PROTECTED]
Sent: Wednesday, June 13, 2001 12:10 AM
To: Palm Developer Forum
Subject: Here is my source and what I am trying to do.


This is one of my errors I KEEP getting. Please explain it to me and how to
solve it.

Warning : function has no prototype
Starter.cpp line 36   {

Error   :
illegal implicit conversion from 'void *' to
'FieldType *'
Starter.cpp line 40
FrmGetObjectIndex(FrmGetActiveForm(), UpdateNumberField));

Error  : illegal implicit conversion
from 'void *' to
'char *'
Starter.cpp line 46
StrCopy( MemHandleLock( txtH ), String );

Error   : ';' expected
Starter.cpp line 481
SetField( UpdateNumberField,focusindexed);


What I am trying to do.

I am trying to make it so that when the user scans a barcode it will print
the barcode number of the UpdateNumberField. This is for the Symbol Palm.
I HAVE successfully Inied the palm scanning device and the scanner works. I
need help on the conversion though and displaying the barcode number in the
UpdateNumberField. Please help me! Thanks!


/***************************************************************************
***
 *
 * Copyright (c) 1999 Palm Computing, Inc. or its subsidiaries.
 * All rights reserved.
 *
 * File: Starter.cpp
 *

****************************************************************************
*/

#include <PalmOS.h>
#include "StarterRsc.h"
#include <HwrMiscFlags.h>           // gives HwrBatteryLevel

#include "ScanMgrDef.h"         // scan manager constants
#include "ScanMgrStruct.h"  // scan manager structures
#include "ScanMgr.h"            // scan manager API functions

//Prototypes

int ScanOpenDecoder();
int ScanCloseDecoder();
static Boolean OnDecoderData(); // GetSerialData();
static Boolean bOpenDecoderOK = false;
static Boolean Auto_Scan = false;
int ScanIsPalmSymbolUnit();
void SetFieldText( UInt16 nFieldID, const Char *  pSrcText, Int16 nMaxSize,
Boolean bRedraw );
static Boolean MainFormHandleEvent(EventPtr event);
static Boolean ApplicationHandleEvent (EventPtr event);
Boolean extendedData;
int extendedDataLength;
MemHandle       hExtendedData;
unsigned char       *pExtendedData;
int extendedDataType;

void SetField( Word Field, CharPtr String )
{
    Handle  txtH;
    FieldPtr    fldP =0;
    fldP = FrmGetObjectPtr(FrmGetActiveForm(),
    FrmGetObjectIndex(FrmGetActiveForm(), UpdateNumberField));

    if(FldGetTextLength(fldP)>0)
    FldFreeMemory (fldP);

    txtH    = MemHandleNew(  StrLen( String ) + 1 );
    StrCopy( MemHandleLock( txtH ), String );

    MemHandleUnlock( txtH );
    FldSetTextHandle( fldP, txtH );

}

/***********************************************************************
 *
 *   Entry Points
 *
 ***********************************************************************/


/***********************************************************************
 *
 *   Internal Structures
 *
 ***********************************************************************/
typedef struct
    {
    UInt8 replaceme;
    } StarterPreferenceType;

typedef struct
    {
    UInt8 replaceme;
    } StarterAppInfoType;

typedef StarterAppInfoType* StarterAppInfoPtr;


/***********************************************************************
 *
 *   Global variables
 *
 ***********************************************************************/
//static Boolean HideSecretRecords;


/***********************************************************************
 *
 *   Internal Constants
 *
 ***********************************************************************/
#define appFileCreator               'STRT'
#define appVersionNum              0x01
#define appPrefID                  0x00
#define appPrefVersionNum          0x01

// Define the minimum OS version we support (2.0 for now).
#define ourMinVersion   sysMakeROMVersion(2,0,0,sysROMStageRelease,0)


/***********************************************************************
 *
 *   Internal Functions
 *
 ***********************************************************************/
void SetFieldText( UInt16 nFieldID, const Char *  pSrcText, Int16 nMaxSize,
Boolean bRedraw )
{
    MemHandle hFieldText;
    Char *   pFieldText;
    FieldPtr pField;

//  pField = (FieldPtr)GetObjectPtr( nFieldID );
//  if( !pField )
        return;

    hFieldText = FldGetTextHandle( pField );
    if( !hFieldText )
        hFieldText = MemHandleNew( nMaxSize );

    // If already allocated, make sure it can handle nMaxSize already.
    // If not, realloc that buffer
    else
    {
        UInt32 curSize = MemHandleSize( hFieldText );
        if( curSize < nMaxSize )
            MemHandleResize(hFieldText, nMaxSize ) ;
    }

    if( hFieldText )
    {
        int len = StrLen(pSrcText);

        pFieldText = (Char * )MemHandleLock( hFieldText );

        if (len > nMaxSize)
        {
            StrNCopy( pFieldText, pSrcText, nMaxSize-1);
            pFieldText[nMaxSize-1] = '\0';
        }
        else
            StrCopy( pFieldText, pSrcText );

        MemHandleUnlock( hFieldText );

        FldSetTextHandle( pField, (MemHandle)hFieldText );
        FldSetTextAllocatedSize( pField, nMaxSize );

        FldSetMaxChars( pField, nMaxSize-1);

        FldRecalculateField( pField, true );
        if( bRedraw )
            FldDrawField( pField );
    }
}




/***********************************************************************
 *
 * FUNCTION:    RomVersionCompatible
 *
 * DESCRIPTION: This routine checks that a ROM version is meet your
 *              minimum requirement.
 *
 * PARAMETERS:  requiredVersion - minimum rom version required
 *                                (see sysFtrNumROMVersion       in SystemMgr.h
 *                                for format)
 *              launchFlags     - flags that indicate if the application
 *                                UI is initialized.
 *
 * RETURNED:    error code or zero if rom is compatible
 *
 * REVISION HISTORY:
 *
 *
 ***********************************************************************/
static Err RomVersionCompatible(UInt32 requiredVersion, UInt16 launchFlags)
{
    UInt32 romVersion;

    // See if we're on in minimum required version of the ROM or later.
    FtrGet(sysFtrCreator, sysFtrNumROMVersion, &romVersion);
    if (romVersion < requiredVersion)
        {
        if ((launchFlags & (sysAppLaunchFlagNewGlobals |
sysAppLaunchFlagUIApp)) ==
            (sysAppLaunchFlagNewGlobals | sysAppLaunchFlagUIApp))
            {
            FrmAlert (RomIncompatibleAlert);

            // Palm OS 1.0 will continuously relaunch this app unless we
switch to
            // another safe one.
            if (romVersion < ourMinVersion)
                {
                AppLaunchWithCommand(sysFileCDefaultApp,
sysAppLaunchCmdNormalLaunch, NULL);
                }
            }

        return sysErrRomIncompatible;
        }

    return errNone;
}


/***********************************************************************
 *
 * FUNCTION:    GetObjectPtr
 *
 * DESCRIPTION: This routine returns a pointer to an object in the current
 *              form.
 *
 * PARAMETERS:  formId - id of the form to display
 *
 * RETURNED:    void *
 *
 * REVISION HISTORY:
 *
 *
 ***********************************************************************/
static void * GetObjectPtr(UInt16 objectID)
{
    FormPtr frmP;

    frmP = FrmGetActiveForm();
    return FrmGetObjectPtr(frmP, FrmGetObjectIndex(frmP, objectID));
}


/***********************************************************************
 *
 * FUNCTION:    MainFormInit
 *
 * DESCRIPTION: This routine initializes the MainForm form.
 *
 * PARAMETERS:  frm - pointer to the MainForm form.
 *
 * RETURNED:    nothing
 *
 * REVISION HISTORY:
 *
 *
 ***********************************************************************/
static void MainFormInit(FormPtr /*frmP*/)
{
Err error;

    // first check and be sure we're running on Palm/Symbol hardware
    if (ScanIsPalmSymbolUnit())
    {
        error = ScanOpenDecoder();  // open the scan manager library
        if (!error)
        {
            bOpenDecoderOK = true; // set global variable that all is well
            ScanCmdScanEnable();    // Enable scanning
        }
        else
            FrmAlert( ErroAlert );
    }
    else


    // Initialize and draw the main form.
    FrmGotoForm( MainForm );
}


/***********************************************************************
 *
 * FUNCTION:    MainFormDoCommand
 *
 * DESCRIPTION: This routine performs the menu command specified.
 *
 * PARAMETERS:  command  - menu item id
 *
 * RETURNED:    nothing
 *
 * REVISION HISTORY:
 *
 *
 ***********************************************************************/
static Boolean MainFormDoCommand(UInt16 command)
{
    Boolean handled = false;
   FormPtr frmP;

    switch (command)
        {
        case MainOptionsAbout:
            MenuEraseStatus(0);                 // Clear the menu status
from the display.
            frmP = FrmInitForm (AboutForm);
            FrmDoDialog (frmP);                 // Display the About Box.
            FrmDeleteForm (frmP);
            handled = true;
            break;

        }

    return handled;
}


/***********************************************************************
 *
 * FUNCTION:    MainFormHandleEvent
 *
 * DESCRIPTION: This routine is the event handler for the
 *              "MainForm" of this application.
 *
 * PARAMETERS:  eventP  - a pointer to an EventType structure
 *
 * RETURNED:    true if the event has handle and should not be passed
 *              to a higher level handler.
 *
 * REVISION HISTORY:
 *
 *
 ***********************************************************************/
static Boolean MainFormHandleEvent(EventPtr eventP)
{
   Boolean handled = false;
   FormPtr frmP;
    Boolean     bHandled = false;

    switch (eventP->eType)
        {
        case menuEvent:
            return MainFormDoCommand(eventP->data.menu.itemID);

        case frmOpenEvent:
            frmP = FrmGetActiveForm();
            MainFormInit( frmP);
            FrmDrawForm ( frmP);
            handled = true;
            break;

// Check to see if the pen is down on a button
case ctlSelectEvent:
            {
                handled = true;     // assume we'll handle it
                switch (eventP->data.ctlSelect.controlID)
                    {
                //Main Form
                    // Update Button
                    case MainUpdateButton:
                    WinEraseWindow();
            frmP=FrmInitForm(UpdateForm);
           FrmDoDialog (frmP);
            FrmDeleteForm (frmP);
            ScanCmdScanEnable();
            handled = true;
                    break;

                    // Main Form Add New Button
                    case MainAddNewButton:
                    WinEraseWindow();
            frmP=FrmInitForm(AddNewForm);
           FrmDoDialog (frmP);
            FrmDeleteForm (frmP);
        //  SetFieldText(AddNewNameField, "No Data", 20, false );
            handled = true;
                    break;




                case AddNewSaveButton:
                SndPlaySystemSound(sndAlarm);
            //  SetFieldText( AddNewNameField, "No Scan", 30, true );
                break;
                    //Update Form Cancel Button
        case UpdateUpdateCancelButton:
            WinEraseWindow();
            frmP = FrmInitForm (MainForm);
            FrmDoDialog (frmP);
            FrmDeleteForm (frmP);
            ScanCmdScanDisable();
            ScanCloseDecoder();
            handled = true;

            break;

            case UpdateUpdateOkButton:
                WinEraseWindow();
            frmP=FrmInitForm(AddNewForm);
           FrmDoDialog (frmP);
            FrmDeleteForm (frmP);
            handled=true;
            break;

            // Add New Form

            case AddNewCancelButton:
            WinEraseWindow();
            frmP=FrmInitForm(MainForm);
           FrmDoDialog (frmP);
            FrmDeleteForm (frmP);
            handled = true;
           break;

            break;
            }





            }



        }

    return handled;
}


/***********************************************************************
 *
 * FUNCTION:    AppHandleEvent
 *
 * DESCRIPTION: This routine loads form resources and set the event
 *              handler for the form loaded.
 *
 * PARAMETERS:  event  - a pointer to an EventType structure
 *
 * RETURNED:    true if the event has handle and should not be passed
 *              to a higher level handler.
 *
 * REVISION HISTORY:
 *
 *
 ***********************************************************************/
static Boolean AppHandleEvent(EventPtr eventP)
{
    UInt16 formId;
    FormPtr frmP;

    if (eventP->eType == frmLoadEvent)
        {

        // Load the form resource.
        formId = eventP->data.frmLoad.formID;
        frmP = FrmInitForm(formId);
        FrmSetActiveForm(frmP);

        // Set the event handler for the form.  The handler of the currently
        // active form is called by FrmHandleEvent each time is receives an
        // event.


        switch (formId)
            {
            case MainForm:
                FrmSetEventHandler(frmP, MainFormHandleEvent);
                break;

            default:
//              ErrFatalDisplay("Invalid Form Load Event");
                break;

            }
        return true;
        }

    return false;

if (eventP->eType==scanDecodeEvent)
    {
        MESSAGE decodeDataMsg;

        int status = ScanGetDecodedData(&decodeDataMsg);

        if(status==STATUS_OK)
            {
                FormPtr form = FrmGetActiveForm();

                if (decodeDataMsg.length==2 && decodeDataMsg.data[0] == 'N'
&&
                decodeDataMsg.data[1]=='R')
                return true;
                 int focusindexed
                 SetField( UpdateNumberField,focusindexed);

                if (form)
                    {
                        //int focusindexed=FrmGetFocus(form);
                        if(focusindexed >= 0 && focusindexed < 65535)
                            {

if(FrmGetObjectType(form,focusindexed)==frmFieldObj)
                                    {
                                        FieldPtr focusField =
                                        (FieldPtr) FrmGetObjectPtr(form,
focusindexed);

                                        if (focusField->attr.editable)
                                            FldInsert(focusField,(CharPtr)
decodeDataMsg.data,
                                            decodeDataMsg.length);
                                     }
                            }
                     }

              }

              return true;
     }

}


/***********************************************************************
 *
 * FUNCTION:    AppEventLoop
 *
 * DESCRIPTION: This routine is the event loop for the application.
 *
 * PARAMETERS:  nothing
 *
 * RETURNED:    nothing
 *
 * REVISION HISTORY:
 *
 *
 ***********************************************************************/
static void AppEventLoop(void)
{
    UInt16 error;
    EventType event;

    do {
        EvtGetEvent(&event, evtWaitForever);

        if (! SysHandleEvent(&event))
            if (! MenuHandleEvent(0, &event, &error))
                if (! AppHandleEvent(&event))
                    FrmDispatchEvent(&event);

    } while (event.eType != appStopEvent);
}


/***********************************************************************
 *
 * FUNCTION:     AppStart
 *
 * DESCRIPTION:  Get the current application's preferences.
 *
 * PARAMETERS:   nothing
 *
 * RETURNED:     Err value 0 if nothing went wrong
 *
 * REVISION HISTORY:
 *
 *
 ***********************************************************************/
static Err AppStart(void)
{
    StarterPreferenceType prefs;
    UInt16 prefsSize;

    // Read the saved preferences / saved-state information.
    prefsSize = sizeof(StarterPreferenceType);
    if (PrefGetAppPreferences(appFileCreator, appPrefID, &prefs, &prefsSize,
true) !=
        noPreferenceFound)
        {
        }

   return errNone;
}


/***********************************************************************
 *
 * FUNCTION:    AppStop
 *
 * DESCRIPTION: Save the current state of the application.
 *
 * PARAMETERS:  nothing
 *
 * RETURNED:    nothing
 *
 * REVISION HISTORY:
 *
 *
 ***********************************************************************/
static void AppStop(void)
{
   StarterPreferenceType prefs;
ScanCmdScanDisable();
ScanCloseDecoder();
    // Write the saved preferences / saved-state information.  This data
    // will be backed up during a HotSync.
    PrefSetAppPreferences (appFileCreator, appPrefID, appPrefVersionNum,
        &prefs, sizeof (prefs), true);

    // Close all the open forms.
    FrmCloseAllForms ();
}


/***********************************************************************
 *
 * FUNCTION:    StarterPalmMain
 *
 * DESCRIPTION: This is the main entry point for the application.
 *
 * PARAMETERS:  cmd - word value specifying the launch code.
 *              cmdPB - pointer to a structure that is associated with the
launch code.
 *              launchFlags -  word value providing extra information about
the launch.
 *
 * RETURNED:    Result of launch
 *
 * REVISION HISTORY:
 *
 *
 ***********************************************************************/
static UInt32 StarterPalmMain(UInt16 cmd, MemPtr /*cmdPBP*/, UInt16
launchFlags)
{
    Err error;

    error = RomVersionCompatible (ourMinVersion, launchFlags);
    if (error) return (error);

    switch (cmd)
        {
        case sysAppLaunchCmdNormalLaunch:
            error = AppStart();
            if (error)
                return error;

            FrmGotoForm(MainForm);
            AppEventLoop();
            AppStop();
            break;

        default:
            break;

        }

    return errNone;
}


/***********************************************************************
 *
 * FUNCTION:    PilotMain
 *
 * DESCRIPTION: This is the main entry point for the application.
 *
 * PARAMETERS:  cmd - word value specifying the launch code.
 *              cmdPB - pointer to a structure that is associated with the
launch code.
 *              launchFlags -  word value providing extra information about
the launch.
 * RETURNED:    Result of launch
 *
 * REVISION HISTORY:
 *
 *
 ***********************************************************************/
UInt32 PilotMain( UInt16 cmd, MemPtr cmdPBP, UInt16 launchFlags)
{
    return StarterPalmMain(cmd, cmdPBP, launchFlags);
}



--
For information on using the Palm Developer Forums, or to unsubscribe,
please see http://www.palmos.com/dev/tech/support/forums/


-- 
For information on using the Palm Developer Forums, or to unsubscribe, please see 
http://www.palmos.com/dev/tech/support/forums/

Reply via email to