Subject: field.c, Line:6001, FldSetText - text longer than maxChars From: "Tony Janke" <[EMAIL PROTECTED]> Date: Fri, 05 Nov 2004 09:15:43 -0700
I get this error "field.c, Line:6001, FldSetText - text longer than maxChars" ONLY when trying to read a number larger than 255 (8-bit). The variable I store the data in is 16 bit Int (data).
the error occurs on line: FldSetTextHandle(FieldPtr, h);
Code: /////////////////////////////////////////////////////////////////////////////////////////////////////////// UInt16 data, controlID; FormType* pForm; FieldType* FieldPtr; MemHandle h, oldHandle; char* p;
pForm = FrmGetActiveForm();
h = MemHandleNew(50); // allocate chunk of memory in heap
p = MemHandleLock(h); // prevent the chunk from moving(lock)
// and obtain pointer to location StrIToA(p, data); MemHandleResize(h, StrLen(p)+1); MemHandleUnlock(h);
Try this code instead: Err DisplayFormField (FieldPtr pField, Char *p, Boolean showField) { if (pField == NULL || p == NULL) return memErrInvalidParam; UInt32 newSize = StrLen (p) + 1; Err err = errNone; MemHandle memH = FldGetTextHandle ( pField ); if( memH == NULL) memH = MemHandleNew ( newSize); else { // need to ensure memory chunk is big enough... FldSetTextHandle (pField, NULL); if( MemHandleSize ( hFieldText ) < newSize) err = MemHandleResize (memH, newSize); if (err != errNone) { // Can't resize field ... MemHandleFree (memH); memH = NULL; } } Char * pText = (memH == NULL ? NULL : (Char *) MemHandleLock( memH)); if (pText != NULL) { // handle is valid and locked StrCopy( pText, p); MemHandleUnlock ( memH); FldSetTextHandle ( pField, memH); if (showField) FldDrawField ( pField ); } else if (!err) err = memErrNotEnoughSpace; return err; }
Roger Stringer Marietta Systems, Inc. (www.rf-tp.com)
-- For information on using the Palm Developer Forums, or to unsubscribe, please see http://www.palmos.com/dev/support/forums/
