Thanks a lot for the feedback. I still see garbage data at the end of the list which is not consistent but does happen several times.
I have taken care of the possibily when there is no value in the DB record (the DB has no blank values though). Any clues?? "John Sutton" <[EMAIL PROTECTED]> wrote in message news:[EMAIL PROTECTED] At first glance, if your fld_1 value is NULL or an empty string, you won't be setting anything for itemList[i], I think you may want an else - that's my first guess without thinking at all (disclaimer) it might look like this... if(structPtr->fld_1 != NULL && structPtr->fld_1 != 0x00) { itemList[i] = (char *) MemPtrNew(100); StrNCopy(itemList[i], structPtr->fld_1, 100); itemList[i][99] = 0x00; // take care about the 0x00 at the end of } else // take care about NO STRING AT ALL { itemList[i] = (char *) MemPtrNew(100); itemList[i][0] = 0x00; } -----Original Message----- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Developer Sent: 24 November 2004 20:00 To: Palm Developer Forum Subject: Question about lists I am creating a dynamic list in my application, filling the list with records from a database. Everything works well except sometimes at the end of the list I see garbage characters. What am I doing wrong below? Here is the code: //Global variables char **ListChoices=0; Int16 ListNumItems; //Global variables end //Local variables Char **itemList; records_record *structPtr; //Local variables end ListNumItems = DmNumRecords(records_StDd); // records_StDd is the DB name if(ListNumItems > 0) { itemList = (Char **) MemPtrNew(ListNumItems * sizeof(Char *)); ListChoices = itemList; // save so we can free it later for(i = 0; i <= ListNumItems-1; i++) { structHandle = DmGetRecord(records_StDd, i); structPtr = MemHandleLock(structHandle); if(structPtr->fld_1 != NULL && structPtr->fld_1 != 0x00) //structPtr->fld_1 is the field value from DB { itemList[i] = (char *) MemPtrNew(100); StrNCopy(itemList[i], structPtr->fld_1, 100); // only copy up to 100 bytes itemList[i][99] = 0x00; // take care about the 0x00 at the end of the string } MemHandleUnlock(structHandle); DmReleaseRecord(records_StDd, i, 0); } if (ListChoices) { for (i=0; i < ListNumItems; i++) MemPtrFree((VoidPtr) ListChoices[i]); MemPtrFree((VoidPtr) ListChoices); ListChoices=0; } lstP = (ListType *) FrmGetObjectPtr(frm, FrmGetObjectIndex(frm, AddLocationDayList)); listptr = (ListPtr)FrmGetObjectPtr(frm, FrmGetObjectIndex(frm, AddLocationDayList)); LstSetListChoices(listptr, itemList, ListNumItems); LstDrawList(listptr); -- For information on using the Palm Developer Forums, or to unsubscribe, please see http://www.palmos.com/dev/support/forums/ -- For information on using the Palm Developer Forums, or to unsubscribe, please see http://www.palmos.com/dev/support/forums/
