关于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,
...全文
83 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
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
  • 打赏
  • 举报
回复
用强制类型转换

19,518

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
  • 嵌入开发(WinCE)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧