关于palm开发,操纵数据库的问题。请帮忙,非常感谢。

The_east_key 2002-04-18 06:54:25
原代码如下(片段):
------------------------------------------------------------
#define DB_FIRST_NAME_START (DB_DATE_TIME_START +DB_DATE_TIME_SIZE)
#define DB_FIRST_NAME_SIZE 16
#define DB_LAST_NAME_START (DB_FIRST_NAME_START +DB_FIRST_NAME_SIZE)
#define DB_LAST_NAME_SIZE 16
#define DB_PHONE_NUMBER_START (DB_LAST_NAME_START +DB_LAST_NAME_SIZE)
#define DB_PHONE_NUMBER_SIZE 16
static void setFields( void )
{
FormPtr form;
MemPtr precord;

UInt16 index;
form = FrmGetActiveForm();
hrecord = DmQueryRecord( contactsDB, cursor);
precord = MemHandleLock( hrecord );
setText(getObject(form,MainFirstNameField),precord+DB_FIRST_NAME_START);
setText(getObject(form,MainLastNameField),precord+DB_LAST_NAME_START);
setText(getObject(form,MainPhoneNumerField),precord+DB_PHONE_NUMBER_START);
MemHandleUnlock( hrecord );
if( isDirty )
{
index = FrmGetObjectIndex( form, MainFirstNameField);
FrmSetFocus( form, index );
GrfSetState( false, false, true );
}
return;
}
----------------------------------------------------
有如下错误:
Error : illegal typehellosxmMain.c line 699 setText(getObject(form,MainPhoneNumerField),precord+DB_PHONE_NUMBER_START);


setText函数的原型是:static void setText(FieldPtr,MemPtr);
应该怎么处理,请指教。
-----------------------------------------------------------------
我的环境:
CodeWarrior8,
...全文
25 点赞 收藏 5
写回复
5 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
The_east_key 2002-04-22
我想在已经解决了
setText(getObject(form,MainFirstNameField),precord+DB_FIRST_NAME_START); 改为:
setText(getObject(form,MainFirstNameField),(__typeof__(UInt16) *)precord+DB_FIRST_NAME_START);
回复
madqg 2002-04-20
这个指针的转换有个先后的问题!有些能转成UInt32的值,有些不能!

你可以先将precord定义成Void * 类型,应该就能做地址值的加减了!

在你用的时候再把它转为MemPtr!
回复
madqg 2002-04-19
可能是类型转换的问题,你把:
setText(getObject(form,MainPhoneNumerField),precord+DB_PHONE_NUMBER_START);
改为:
setText((FieldPtr)getObjectform,MainPhoneNumerField),precord+DB_PHONE_NUMBER_START);

回复
The_east_key 2002-04-19
不是的,是后面的问题,precord为指针类型,DB_PHONE_NUMBER_START为整型常量,提示错误的意思就是两者不能相加,所以就很奇怪。我做了一个试验。如下:
void * TestPtr;
UInt16 TestInt = 100;
TestPtr = &TestInt + 50;
以上代码运行成功!
但是
void * TestPtr;
UInt16 TestInt = 100;
TestPtr = &TestInt;
TestPtr = TestPtr +50;
出现的错误为:Error : illegal type
别的什么错误信息也没有,请问应该怎么做。
谢谢!


回复
cockhorse 2002-04-19
用强制类型转换
回复
发动态
发帖子
嵌入开发(WinCE)
创建于2007-09-28

1.9w+

社区成员

硬件/嵌入开发 嵌入开发(WinCE)
申请成为版主
社区公告
暂无公告