我的Centro终于到了

让我好等,机器非常新,就是带号了。。查了下hssn,还是有滴,和淘宝上的工程机还是不一样滴

嗯,不过已经没啥热情了,没有以前拿到新手机时那么兴奋了

推荐一个JVM For Palm

2.1的版本,是我试过的几个里比较好用的一个,直接复制进ram,自动的重启一次就好了
还算稳定,比2.2的易安装,稳定好些,错误少些

有版权问题,不提供下载了。事实上很多地方可以搜到最新版的下载。(update on mar. 6th, 2008)

杂记

我在想我是不是很常用“杂记”或“无题”来作题目了

今天apple出了bootcamp 1.2beta,加之上次装vista时,按网上的瘦身方法,把驱动目录删掉了,导致我后来连daemon tools都装不上了,哭,而且不像xp之类会让你插光盘找。又是重装,用的是u版的,相当顺利,比装xp简单许多,二十来分钟就好了。唯一要注意的是mbp上安装时需要自己选下分区吧。然后装驱动,也相当顺利,这次的bc确实做得不错,看设备管理器里已经没有任何驱动错误的设备了,蓝牙也能工作了,很赞,呵呵。
read more

移除小方块

再次贡献代码

qq昵称里老有人喜欢加ascii 09之类以图排序在前面,可是手机上显示会是方块的,还有一些虽然也是gbk字符,可是在手机上显示不了,亦或者用户用的是gb,显示不了gbk扩展的内容,就移除好了

void RemoveUnprintChars(char * str,Boolean removeNewLine)
{
UInt16 i,len;
UInt8 chW;
WChar ch;
char * p=str;
if (str==NULL)
return;
len=StrLen(str);
i=0;
while (i < len) {
chW= TxtGetNextChar(str, i, &ch);
if (TxtCharIsPrint(ch)
|| (!removeNewLine && ch!='\n') )
{
if (chW==1)
*p++=ch;
else
{
*p++=ch/256;
*p++=ch%256;
}
}
i+=chW;
}
 
*p=0;
}

带报错的atoi

好久没写东西了,随便填上一段代码

这个qq烦死了,我自己用了一个钟头,不停在后台运行聊天,都一点问题没有。不过还是有不少人有重启问题,不得不把各种检查都做细致来

上一段代码替换stratoi,不过里面有对%1a这种处理,这是qq协议中带的,一般大家用不到就去了这一段吧,那其实result可以换个变量名:)

 
Int32 myAToI(const Char *str)
{
UInt8 result;
if (str==NULL || StrLen(str)==0)
{
ErrDisplay("严重异常:转换空数字串,请退出");
return 0;
}
if (str[0]=='%')
{
if (StrLen(str)!=3)
{
ErrDisplay("严重异常:数字转换出错%,请退出");
return 0;
}
if (str[1]>='a')
result=str[1]-'a'+10;
else
result=str[1]-'0';
result*=16;
if (str[2]>='a')
result+=str[2]-'a'+10;
else
result+=str[2]-'0';
return result;
}
if (!TxtCharIsDigit(str[0]) && str[0]!='-')
{
ErrDisplay("严重异常:数字转换出错1,请退出");
return 0;
}
for (result=1;result<StrLen(str);result++)
if (!TxtCharIsDigit(str[result]))
{
ErrDisplay("严重异常:数字转换出错2,请退出");
return 0;
}
return StrAToI(str);
}

Palm Dev 随笔(2.11)

接下来会常有这种小文章了,可惜国内开发者不多,不然我估计会有不少人有兴趣的,哈哈:p 自我感觉良好一下

嗯,今晚的要收工。写点刚才一个钟头里遇到的一些东西:

1. 打开网络设置面板

launchwithcommand(sysfiletpanel, sysfilecnetworkpanel,sysapplaunchcmdpanelcalledfromapp, null);

2.断开网络连接

hsnetworkdropconnection();

3.退出当前程序

这个我以前试过直接调appstop()似乎也可以,就是frmcloseallforms()啦,不过我觉得逻辑上有点说不通,因为appeventloop()没道理退出啊。

现在一般我就加个全局变量forcestop,默认为false,

改appeventloop那行为

while (event.etype != appstopevent && !forcestop);

有时不能用全局量,或者某些特定情况,直接自己加个appstopevent到事件对列就好了

竟然才三点,其它的没什么好写了。哦,还有把680模拟器中文化。。。嗯,这个懒得说了

PalmQQ动工

我们说人是有惰性的,这是相当正确的。

实在无聊的紧,我今天又是7点多睡,一直睡到十点半,现在又清醒的很,没有办法,想着法子找点好玩的东西,未果,好吧,干活。这个qq是得写过了,唉,我还答应tencent的ppmm二月底完工呢:(

开始一个新的系列,记录一个开发过程。

想来想去,还是挑了cw了,pods实在难用得让我没法忍,想想这次应该是用不到什么arm code的,上次唯一想做成arm code的是那个md5计算函数,用来算密码的东东,速度不是问题,而是上次分段没写好,眼看要过64k了,我打算把它编译到外部,好让程序小一点,可惜最后没有成功。

建新工程,用c application wizard,我看来看去,其实就这个合适点。不过里面的模板还是糟糕了些,对于要开始一个不是demo的程序来说,几乎都是自己写过的好。删掉所有mainform的东西,几乎清空了rcp文件,留了一个menu id editonlymenubar,一个alert id romincompatiblealert,还有把图标先存好了。顺便说一句,iconfamilyex这东西里不能只有一项的,不然图标位置会偏。

这次有个新打算,把每个form做成一个rcp文件,以后好改。而像alert这些都是单独成文件。include这么多*_rsc.h是有些麻烦,所以再写个resource_header.h,光写#include好了。

palmqq.c文件里也就留了apphandleevent,appeventloop,appstart,appstop,pilotmain。在pilotmain这里也小改了一下,我正在琢磨怎么让后台运行重入时定位到正确窗口。

想了下,还是都从appstart()入口好了,如果错误返回>10的值,如果是未登录的正确情况返回0,已登录从后台重进就返回1。于是pilotmain里根据appstart()的返回值再做个switch跳到对应的form就好了。

每次写程序前,目标总是定很大,前阵子想抓mobileqq 2007的包,因为新版的手机qq支持好友分组,支持群消息,支持传图片和文件了。腾讯不提供这协议,我用的还是旧版协议。本来希望自己分析来做的,现在想想吃力不讨好的事情还是不要做得好,何况不小心还是会完不成的。

要开始写loginform先了,这次把各个pref也分开来好了,比如登录窗口要保留原来的登录号码和密码来着,不都放palmqq.h里了,太乱了,反正这个pref应该只有loginform用到,不如直接在这里做好了。在palmqq.h里只存它的prefid

前两天让ayang帮忙设计界面的,一直没什么好看的,想想还是算了,不如走清纯路线。。。和原来的版本差不多就好。我原来还想支持320×480的,现在想想也算了,还是先做出来再说,以后要改应该也不是太困难,每个form里多支持一个函数罢了。

后台运行还是心病,虽然一定要支持的,但怎么做,我还是不太有谱,还没有实验过官方的方式是否可行。

愉快的一天

最近运气背得不行,好在多年来已经习惯于这种接连一阵的低迷期。虽然可以预见一阵子内还不会结束,不过今天算是中间一个小插曲吧,过得还是比较让人开心的

前一个项目终于要结束了,开始盘算着写点自己有兴趣的东西。看些奇怪的偏门的开发文档,后来实在困不行了,四点多便去睡了,比前些日子还是稍早了两钟头的。不过今天是最近一两周来起得最早的一次。同室只有一个室友了,他今天早起陪mm逛街。起床时小小响动,似乎已让我睡得不是很安宁,kent的一条短信让我完全清醒过来,说今天一起吃饭来着。

同学都快走光了,这几天常常是我一个人在寝室呆一整天,无聊得紧,也想着该出去活动活动。起床,接到roddick电话,说kent同他讲啦,他一会儿来接我的说。呵,都是老朋友了,大约想着我该还得睡会儿,说晚些过来。不想我今天倒是没什么睡意,起来在apple版上灌了几篇水文,找些mac os上的小软件玩。:)
read more

后台运行,后台!

敲击键盘,本来想写篇im后台运行设计构想的。虽然有idea,想想还不成熟,就不乱写了。
不知道有谁了解chatopus怎么做到的不。难道用了那个创建后台线程的函数?不过那东西似乎也只能在本程序内做多线程啊。麻烦的东西。。。。

Fucking PIM SDK

官方的sdk里的代码写得也这么糟糕。。。害偶调程序又麻烦死
pack和unpack联系人记录时,没有检索blob段的大小。按文档要求单个blob不能超过1k,事实上它自己带的铃声和照片也不止了,这也就算了,系统内部的东西我们管不着。但分明发现有的用户的联系人记录里有blob数据有50k,导致我存不进我自己的cache信息了。
相当fz,没有任何检查,返回错误还是因为size超过uint16,溢出了,靠,什么玩意啊,还得自己去改addressdb.c文件,直接把这个超大的blob给扔掉,鬼知道什么程序生成的,估计也用不着,反正createid没找到对应的程序。不知道当初怎么写进去的