This sounds to me like a structure packing / alignment problem. If you defined your app info type in Codewarrior and allocated it with your device application, the packing size is 2. So, for example:
typedef struct { UInt8 junk; UInt32 moreJunk } MyType; has size 6. (There is a SINGLE padding byte added after junk). However if you do the same definition in VC on a desktop, the packing size is 4 and your structure will have size 8. Either explicitly pad the device to 4-byte boundaries, or, more rationally, use #pragma pack for your desktop code to override the desktop's default packing. -bob mckenzie, plamsource pdx -----Original Message----- From: Guanghe Pan [mailto:snow_rive@;yahoo.com] Sent: Sunday, October 20, 2002 11:52 PM To: Palm Developer Forum Subject: Conduit - App Info block data error I have a conduit and get the following problem when I try to read app Info data from Handheld. The following structure are app Info structure defined inside both Palm application and conduit application. typedef struct { WORD renamedCategories; CHAR categoryLabels[16][16]; BYTE categoryUniqIDs[16]; BYTE lastUniqID; BYTE reserved1; WORD reserved2; BYTE sortOrder; WORD MyWord1; BOOL MyBOOL1; DWORD MyDWORD1; DWORD MyDWORD2; WORD MyWordArray1[10][5]; BYTE MyByteArray1[20]; CHAR MyString1[20][16]; } MyAppInfoType, *MyAppInfoPtr; Inside the following function SynchronizeAppInfoBlock(CDbGenInfo& dbInfo, CBaseTable& rTable, eSyncTypes syncType, eFirstSync firstSync) I defined MyAppInfoPtr pAppInfo; dbinfo contains App Info data from handheld, and then get I fill pAppInfo pAppInfo = (MyAppInfoPtr) dbInfo.m_pBytes; Then tempDWord = pAppInfo->MyDWORD1; tempDWord = SwapDWordToIntel(tempDWord); I can get correct result but tempDWord = pAppInfo->MyDWORD2; tempDWord = SwapDWordToIntel(tempDWord); the result is incorrect Also MyByteArray1 is incorrect the correct results should be: MyByteArray1[0] = 0; MyByteArray1[1] = 1; MyByteArray1[2] = 2; ... MyByteArray1[17] = 17; MyByteArray1[18] = 18; MyByteArray1[19] = 19; But What I got are: MyByteArray1[0] = 2; MyByteArray1[1] = 3; MyByteArray1[2] = 4; ... MyByteArray1[17] = 19; MyByteArray1[18] = 'A'; MyByteArray1[19] = 'd'; MyString1 is incorrect too, The correct results are: MyString1[0] = "Address" MyString1[1] = "Phone" ... But I got: MyString1[0] = "dress" MyString1[1] = "one" ... It seems everything was shifted down 2 bytes. 'A' and 'd' in MyString1[0] was move up to MyBytesArray1[18] and MyByteArray1[19] Any Problem here? I also try to read the app info data as follows pBuff = (char*)dbInfo.m_pBytes; and then read each structur member and move the pointer to the next member, but get the same problem Thanks for your help. -Rocky __________________________________________________ Do you Yahoo!? Y! Web Hosting - Let the expert host your web site http://webhosting.yahoo.com/ -- 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/