Hello Sir,
I am developing a clock application for PalmPilot using GCC tool.
Here I am givig code
void SetTimeHour()
{
FormPtr frmPtr;
ControlPtr ctlP;
SWord hour;
CharPtr timeP;
frmPtr = FrmGetActiveForm();
ctlP = FrmGetObjectPtr (frmPtr, FrmGetObjectIndex
(frmPtr,PushButtonHour));
timeP = MemPtrNew(4);
timeP = CtlGetLabel(ctlP);
hour = (int)StrAToI(timeP);
hour++;
if(hour > 12 )
hour = 1;
StrIToA (timeP,(long)hour);
CtlSetLabel(ctlP,timeP);
MemPtrFree(timeP);
}
void SetTimeMinute()
{
FormPtr frmPtr;
ControlPtr ctlP;
SWord minute;
CharPtr timeP;
frmPtr = FrmGetActiveForm();
timeP = MemPtrNew(4);
ctlP = FrmGetObjectPtr (frmPtr, FrmGetObjectIndex
(frmPtr,PushButtonMinute));
timeP = CtlGetLabel(ctlP);
minute = (int)StrAToI(timeP);
minute++;
if(minute > 59 )
minute = 0;
StrIToA (timeP,(long)minute);
CtlSetLabel(ctlP,timeP);
MemPtrFree(timeP);
void SetCurrentTime()
{
FormPtr frmPtr;
SWord hour,minute;
SWord ON = 1;
ControlPtr ctlP;
CharPtr timeP;
DateTimeType dateTime;
frmPtr = FrmGetActiveForm();
timeP = MemPtrNew(4);
TimSecondsToDateTime (TimGetSeconds(), &dateTime);
if((hour = dateTime.hour) >= 12)
{
if (hour != 12)
hour = hour - 12;
ctlP = FrmGetObjectPtr (frmPtr, FrmGetObjectIndex (frmPtr,PushButtonPM));
CtlSetValue (ctlP,ON);
}
else
{
ctlP = FrmGetObjectPtr (frmPtr, FrmGetObjectIndex (frmPtr,PushButtonAM));
CtlSetValue (ctlP,ON);
}
minute = dateTime.minute;
StrIToA (timeP,(long)hour);
ctlP = FrmGetObjectPtr (frmPtr, FrmGetObjectIndex (frmPtr,PushButtonHour));
CtlSetLabel(ctlP,timeP);
CtlSetValue (ctlP,ON);
StrIToA (timeP,(long)minute);
ctlP = FrmGetObjectPtr (frmPtr, FrmGetObjectIndex
(frmPtr,PushButtonMinute));
CtlSetLabel(ctlP,timeP);
MemPtrFree(timeP);
}
Here timeP is local variable and i am everytime allocating and freeing
memory.
Functions SetTimeHour and SetTimeMinute, i am calling from select event of
Button of form SetTime.There i chech value of PushButtons (pushButtonHour
and PushButtonMinute)whether ON or OFF and if value of Hour button is
ON(i.e.1) then i increase/decrease the hour. same for minute pushbutton.
But here i got problem , when i assign the value of CtlGetlabel to timeP,
it doesn,t get assigned. Old value get set,though it is local variable.
What's the problem.Is this the memory problem?
Please do Reply.
Shital