I am still having trouble restoring the preferences.

I saved the preferences as so:
MyPrefDB *prefP = (MyDB *) MemPtrNew (sizeof(MyPrefDB));
StrCopy(prefP->data, "MyData")
PrefSetAppPreferences(kCreator, 0, 1, &prefP, sizeof(MyPrefDB), true);
MemPtrFree(prefP);

and it worked fine. But when I try retrieve it, and initialize it back to the 
textfield on my form, its giving me an error:

UInt16 PrefSize = sizeof(MyPrefDB);
MyPrefDB *prefP = (MyPrefDB *) MemPtrNew (sizeof(MyPrefDB));
PrefGetAppPreferences(kCreator, 0, prefP, &PrefSize, true);
StrCopy(MyChar, prefP->data); //MyChar is a character[]
MemPtrFree(prefP);

***But when I tried to do this:
StrCopy(MyChar, "test");
instead of,
StrCopy(MyChar, prefP->data); 
The "test" string was initialized with no problem.

I think that I am reading from the Ptr of the MyPrefDB the wrong way...please help!



In a message dated 9/3/2004 3:27:41 AM Eastern Daylight Time, "Helmut A. Bender" 
<[EMAIL PROTECTED]> writes:

>Am Freitag, 3. September 2004 00:36 schrieb Tim Kostka:
>> What you are doing is saving the *pointer* to the preference data, which is
>> of course not what you want as that pointer is invalid as soon as you call
>> MemPtrFree. �To save the database, you would do the following:
>>
>> MyPrefDB *prefP = (MyDB *) MemPtrNew (sizeof(MyPrefDB));
>> // populate data here before you save it
>> PrefSetAppPreferences(kCreator, 0, 1, &prefP, sizeof(MyPrefDB), true);
>> MemPtrFree(prefP);
>
>nearly right, but now you set the value of the pointer with the size of the
>MyPrefDB. It shoud be
>
>PrefSetAppPreferences(kCreator, 0, 1, prefP, sizeof(MyPrefDB), true);
>
>
>> and to restore:
>>
>> UInt16 PrefSize = sizeof(MyPrefDB);
>> MyPrefDB *prefP = (MyPrefDB *) MemPtrNew (sizeof(MyPrefDB));
>> PrefGetAppPreferences(kCreator, 0, &prefP, &PrefSize, true);
>
>Here, too, prefP is already the pointer to the buffer, so write
>
>PrefGetAppPreferences(kCreator, 0, prefP, &PrefSize, true);
>
>as in the original mail.
>
>> when you are done accesing the data, use MemPtrFree to release it.
>>
>> Also, the call PrefGetAppPreferences will return values which will let you
>> know what's going wrong. �If there's no preference stored, then it'll tell
>> you. �It also returns the size of the preference data. �Read the
>> documentation on that function if you want a better understanding of what
>> it tells you.
>>
>> Hope this helps, and hope I didn't make any typos. �:)
>> --
>> Tim Kostka
>>
>>
>>
>> <[EMAIL PROTECTED]> wrote in message news:[EMAIL PROTECTED]
>>
>> > Problem: How do I retrieve a large struct Preference which was stored by
>> > using MemPtrNew??
>> >
>> > I was able to set the preference in my StopApp function this way:
>> >
>> > MyPrefDB *prefP = (MyDB *) MemPtrNew (sizeof(MyPrefDB));
>> > PrefSetAppPreferences(kCreator, 0, 1, prefP, sizeof(prefP), true);
>> > MemPtrFree(prefP);
>> >
>> > In my startApp function, I try to retrieve it using this code, but its
>> > giving me an error:
>> >
>> > UInt16 PrefSize = sizeof(MyPrefDB);
>> > MyPrefDB *prefP = (MyPrefDB *) MemPtrNew (sizeof(MyPrefDB));
>> > PrefGetAppPreferences(kCreator, 0, prefP, &PrefSize, true);
>> > MemPtrFree(prefP);
>> >
>> > Am I doing this right?? Any help in this matter is greatly
>> > appreciated..Thanks in advance.
>
>--
>Mit freundlichen Gr��en
>Helmut A. Bender
>Helmut Bender GmbH
>
>--
>For information on using the Palm Developer Forums, or to unsubscribe, please see 
>http://www.palmos.com/dev/support/forums/
>

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

Reply via email to