I have some code which just needs to write to a single table database.
however, it's dying on a line, that i'm not sure how to fix.  (i'm new to
palm and c++)

I've snipped most of the important parts here.  It is dying on one of two
lines, being:
StrCopy(pChar, "Orders\0");
DmStrCopy(s, 0, pChar);


can anyone help me figure out what would be happening?
I have posted full source code at
http://www.criminalsmostly.com/~mandreko/scanner.zip if it helps.












typedef struct {
 char Department[20];
 char Operator[20];
 char RXNumber[20];
} DBRecord;
typedef DBRecord   DBRecordType;
typedef DBRecord*   DBRecordPtr;




if (eventP->data.ctlEnter.controlID == Submit)
    {
     FormPtr pForm = FrmGetActiveForm();
     if( pForm )
     {
      //do clear code here
      FormPtr pForm = FrmGetActiveForm();
      if( pForm )
      {
       //TODO: put code to put database here
       SetFieldText(RX, "", 20, false);


       //Open a database, or create one if it doesn't exist

       Err err;
       //DmOpenRef myRef;
       // DB is being opened
       gDatabase = DmOpenDatabaseByTypeCreator( 'DATA', appFileCreator,
        dmModeReadWrite);
       if (!gDatabase) {
        // we're creating a new DB
           err = DmCreateDatabase(0, "ScannerORIM", appFileCreator,
            'DATA', false);

           if (!err) {
               gDatabase = DmOpenDatabaseByTypeCreator('DATA',
appFileCreator,
                dmModeReadWrite);
               if (!gDatabase)
                   err = DmGetLastErr();
           }
       }

       // Create a new record in the database

       UInt16 index = dmMaxRecordIndex;

       MemHandle h = DmNewRecord(gDatabase, &index, 5);

       if (!h)
           err = DmGetLastErr();
       else
       {
           Char * s = (Char *) MemHandleLock(h);

           Char * pChar = (Char*)MemPtrNew(5 * sizeof(Char*));
           StrCopy(pChar, "Orders\0");
           // program is dying on next line

           DmStrCopy(s, 0, pChar);
       MemPtrFree( pChar);
           MemHandleUnlock(h);
       }
       CreateRecord();
       if (gDatabase)
           DmCloseDatabase(gDatabase);

       FrmDrawForm(pForm);
      }
      handled = true;
     }
    //}
    if (eventP->data.ctlEnter.controlID == Clear)
    {
     FormPtr pForm = FrmGetActiveForm();
     if( pForm )
     {
      //do clear code here
      FormPtr pForm = FrmGetActiveForm();
      if( pForm )
      {
       SetFieldText(Dept, "", 20,false);
       SetFieldText(Oper, "", 20, false);
       SetFieldText(RX, "", 20, false);
       FrmDrawForm(pForm);
      }
      handled = true;
     }
    }



static void CreateRecord()
{
    MemHandle h;
    UInt16 index = 0;
    DBRecordType r;  // this is our database record

    h = DmNewRecord(gDatabase, &index, sizeof(r));

    // fill the record with data
    StrCopy(r.Department, "123456");
    StrCopy(r.Operator, "987654321");
    StrCopy(r.RXNumber, "147258369");

    if (h) { // could fail due to insufficient memory!
        MemPtr p = MemHandleLock(h);
        Err err = DmWrite(p, 0, &r, sizeof(r));

        MemPtrUnlock(p);
        DmReleaseRecord(gDatabase, index, true);
    }
}



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

Reply via email to