PalmOS 3.3
Hi everyone, please help me understand why I can only store 4 bytes in
the app preferences.
My preference _pPrefs is a pointer to a structure of type
//===========================
typedef struct
{
UInt32 dwRecordId;
Char tcLandCode;
} AppPreferenceType;
//===========================
allocated with operator new. It is stored as an app pref into saved
prefs like this
//=======================================
PrefSetAppPreferences (_ulCid, _wPrefsId, _iVersion,
_pPrefs, _wPrefsSize, true);
//=======================================
where _wPrefsSize = sizeof( AppPreferenceType ).
Next runtime it is loaded into heap memory again:
//==========================================================
if (PrefGetAppPreferences(_ulCid, _wPrefsId, _pPrefs, &_wPrefsSize,
true) ==
noPreferenceFound) {
_pPrefs->dwRecordId = 0;
_pPrefs->tcLandCode = 0;
}
//==========================================================
(the & is ok, a UInt16* is in accordance with the doc).
I would have expected, that _pPrefs had retained it's values from last
runtime. In fact it is nearly so:
*** The first 4 Bytes only are retained (dwRecordId), the second member
(tcLandCode) remains unitialized. ***
I can already observe, that _wPrefsSize, which is initially 6 before the
pref is written, is set 4 by PrefSetAppPreferences.
When I export the database from POSE and have a look on it, I can see,
that it ends after member dwRecordId,
tcLandCode seems not to have been stored.
I understood, that _pPrefs is a pointer to a buffer of a size, which is
not restricted to 4 bytes, is it?
Thank you very much in advance!
--
For information on using the Palm Developer Forums, or to unsubscribe, please see
http://www.palmos.com/dev/support/forums/