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/
