Is the corresponding load sequence:

void LoadData(DmOpenRef db, myStructType *myStructP){
    MemHandle   recH=NULL;
    UInt8      *recP;
    UInt16   recIndex=-1;  //will save the data in a new record at the
end of the database

    RecH=DmNewRecord(db, recIndex, sizeof(myStructType));
    if (recH){
        recP=MemHandleLock(recH);
        DmRead(recP,0,myStructP, sizeof(myStructType));
    }
}

?

One other question, the part about saving the pointer data.

The pointer contains the address of the data.

Under PalmOS, there is no hard drive where this data safely resides.

If the address is overwritten, you lose the data.  Okay, that I understand.

How does one store (and load) this pointer data

in a manner that will insure that it is retained?

(Anyone offended by a basic question isn't expected to respond.)

Many thanks to anyone who does answer these questions.


----- Original Message ----- 
From: "Robert Moynihan" <[EMAIL PROTECTED]>
To: "Palm Developer Forum" <[email protected]>
Sent: Sunday, October 09, 2005 9:29 AM
Subject: Re: Structure of structures


> Del Ventruella wrote:
>
> >Thank you very much!  Can anyone answer the second question regarding how
to
> >save and load one of these structures of structures?
> >
> >
>
> You don't "save" or "load" the structure, per se.  The structure is
> simply declared in your application, and it tells your app how to
> interpret a block of data.  You DO "save" and "load" the block of data.
> So, presuming that you have declared a structure called "myStructType",
> and you have created a block of memory and have a pointer to it called
> "myStructP", and you have an open db to write to, you would do it
> something like this...
>
> void SaveData(DmOpenRef db, myStructType *myStructP){
>     MemHandle   recH=NULL;
>     UInt8      *recP;
>     UInt16   recIndex=-1;  //will save the data in a new record at the
> end of the database
>
>     RecH=DmNewRecord(db, recIndex, sizeof(myStructType));
>     if (recH){
>         recP=MemHandleLock(recH);
>         DmWrite(recP,0,myStructP, sizeof(myStructType));
>     }
> }
>
> Remember that this will save all the contents of the structure, but if
> your structure contains pointers to other data (such as the 'name' part
> of my 'SoundDataType' structure) then that other data will not be
> saved.  It will save the current pointer address, but that will almost
> assuredly be meaningless once you try to read the data again at a later
> time.  You have to save those 'pointed-to' bits of data separately.
>
> Bob
>
> Bob
>
> >
> >----- Original Message ----- 
> >From: "Robert Moynihan" <[EMAIL PROTECTED]>
> >To: "Palm Developer Forum" <[email protected]>
> >Sent: Saturday, October 08, 2005 8:33 PM
> >Subject: Re: Structure of structures
> >
> >
> >
> >
> >>Hi Del, sure you can include structures in structures.  AFAIK, it's not
> >>a PalmOS thing, but rather a C thing.  As an example, here's a quick
> >>sample from one of my apps, where I declare a couple of structs, then
> >>include them in another struct.  Note that the large structure contains
> >>my own structures plus the "TimeType" structure as declared by the
> >>PalmOS headers.  Bob
> >>
> >>FWIW.  Bob
> >>
> >>typedef struct {
> >>    Boolean        on:1;
> >>    Boolean        override:1;
> >>    Boolean        overrideV:1;
> >>    Boolean        vibrate:1;
> >>    Boolean        unused:4;
> >>    UInt8        soundType;
> >>    UInt16        vol;
> >>    UInt16        pause;
> >>    UInt16        speed;
> >>    UInt16        hz;
> >>    UInt16        stime;
> >>    char        *name;
> >>} SoundDataType;
> >>
> >>
> <snip>
>
> -- 
> 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