i have fixed the problem , free the old memhandle after the new one on line.

2006/11/23, victorp king <[EMAIL PROTECTED]>:
>
>  the line in red always returns  error code "memErrInvalidParam "
>
> anybody can hele me ?
>
>
> static Boolean MainFormHandleEvent(EventPtr event) {
>  FormPtr formP;
>  Boolean handled;
>  MemHandle mh;
>  FieldPtr fldPtr;
>  char *s ;
>  char *label;
>  char label0[30];
>  char lable1[10];
>  char lable2[50] = {'a'};
>  UInt16  err;
>  UInt16 volRefNum;
>  UInt32 volIterator;
>  MemHandle oldMh;
>
>  if(event->eType == frmOpenEvent) {
>   formP = FrmGetActiveForm();
>   FrmDrawForm (formP);
>   handled = true;
>  }
>     else if(event->eType == ctlSelectEvent) {
>
>   switch(event->data.ctlSelect.controlID) {
>    case CheckVolumnsBtn :
>     volIterator  = vfsIteratorStart;
>     label = "No Volumns to Start";
>     while(volIterator != vfsIteratorStop) {
>      err = VFSVolumeEnumerate(&volRefNum, &volIterator);
>
>      if(err == errNone){
>       err = VFSVolumeGetLabel(volRefNum, label0, 16);
>       StrCat(lable2, label0);
>      }
>      //label = "errorNone";
>      else if(err == expErrNotOpen)
>      label = "expErrNotOpen ";
>      else if(err == vfsErrNoFileSystem)
>      label = "vfsErrNoFileSystem";
>      else if(err == vfsErrVolumeBadRef)
>      label = "vfsErrVolumeBadRef ";
>      else if(err == vfsErrBufferOverflow )
>      label = "vfsErrBufferOverflow ";
>      else if(err == vfsErrNameShortened )
>      label = "vfsErrNameShortened ";
>      else if(err == expErrEnumerationEmpty)
>      label = "No Volumns";
>      else if(err == sysErrParamErr)
>      label = "NormalError";
>     }
>
>
>     mh = MemHandleNew(80);
>     s = MemHandleLock(mh);
>     StrCopy(lable1, "\0");
>     StrCat(lable2, label0);
>     StrCopy(s, lable2);
>     label = NULL;
>           MemHandleUnlock(mh);
>           fldPtr = (FieldPtr) getObjectPtrByID(FrmGetActiveForm(),
> VolumnsText);
>
>           oldMh = FldGetTextHandle(fldPtr);
>
>           if(oldMh != NULL)
>           err = MemHandleFree(oldMh);
>
>           FldSetTextHandle(fldPtr, mh);
>           FldDrawField(fldPtr);
>
>           handled = true;
>    default :
>     handled = false;
>     break;
>   }
>  }
>  else {
>   handled = false;
>  }
>
>  return handled;
> }
>
>
> -- For information on using the PalmSource Developer Forums, or to
> unsubscribe, please see http://www.palmos.com/dev/support/forums/

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

Reply via email to