Are you looking at the value of DB in a debugger, or are you taking the
return value in 'c'.  You allocate c as a single character, yet StrIToA
returns a character pointer, which will require at least two locations.  Use
char *c, then allocate space with a call to MemPtrNew.

Regards,

Steve

> -----Original Message-----
> From: [EMAIL PROTECTED]
> [mailto:[EMAIL PROTECTED]]
> Sent: Monday, February 21, 2000 10:19 AM
> To: Palm Developer Forum
> Subject: Error in TableLoadDataFunc
> 
> 
> 
> Can anyone spot the error in this? I'm trying to initialise a 
> table prior to
> a FrmDrawForm. The DmNumRecords and DmQuery both seem to 
> cause problems.
> With DmNumRecords returning '4092'! when DB only has 2 
> records in it. DB is
> a global variable and IRecordTypePtr is a pointer to a record 
> structure.
> Preceding functions can call DmNumRecord correctly and I 
> can't work out
> what's wrong with this function. Can you help?
> 
> Perhaps I don't understand how the OS uses TableLoadDataFunc 
> functions. If
> anyone's got some simple source code for setting up and using 
> a table that
> would be helpful too.
> 
> Thanks in anticipation,
> 
> John.
> 
> static Err ListViewGetSummary (VoidPtr table, Word row, Word column,
>     Boolean editable, VoidHand textH, WordPtr textOffset, WordPtr
> textAllocSize,
>     FieldPtr fld)
> {
> 
>     Word recordNum;
>     VoidHand recordH;
>     FieldAttrType attr;
>     IRecordTypePtr recordP;
>     IRecordTypePtr nilPtr = NULL;
>     UInt maxrecords = 0;
>     char c;
> 
>     // Get the record number that corresponds to the table item.
>     // The record number is stored as the row id.
>     recordNum = TblGetRowID (table, row);
> 
> ErrDisplay("Check Point 2");
> maxrecords = DmNumRecords(DB);
> ErrDisplay("Check Point 3");
> StrIToA(&c, maxrecords);
> ErrDisplay(&c);
> 
>         recordH = DmQueryRecord(DB, recordNum);
>         ErrFatalDisplayIf ((! recordH), "Record not found");
> ErrDisplay("Check Point 4");
>         recordP = (IRecordTypePtr) MemHandleLock(recordH);
> 
> 
>         *textOffset = &recordP->summary - ((CharPtr) recordP);
>         *textAllocSize = StrLen (&recordP->summary) + 1;  // 
> one for null
> terminator
>         *textH = recordH;
> 
>         MemHandleUnlock(recordH);
> 
>         // Set the field to support auto-shift.
>         if (fld)
>             {
>             FldGetAttributes (fld, &attr);
>             attr.autoShift = true;
>             FldSetAttributes (fld, &attr);
>             }
> 
> ErrDisplay("Check Point 4");
>     return (0);
> }
> 
> 
> 
> -- 
> "This message is brought to you by Reuters.net;
> Any views expressed are those of the sender, except where the sender
> specifically states them to be the views of Reuters Limited."
> 
> -- 
> For information on using the Palm Developer Forums, or to 
> unsubscribe, please see http://www.palm.com/devzone/mailinglists.html
> 
> 

-- 
For information on using the Palm Developer Forums, or to unsubscribe, please see 
http://www.palm.com/devzone/mailinglists.html

Reply via email to