franksunny的个人技术空间
获得人生中的成功需要的专注与坚持不懈多过天才与机会。 ——C.W. Wendte
@Skill
不知道什么意思啊,该方法适用于S60 3rd以后的机型,2nd机型我没有试过,不过照理应该也可以,毕竟mtm在S60中变化不大
re: [整理]关于CompleteWithAppPath函数 frank.sunny 2010-07-14 18:30
@flashtao613
谢谢啊
好久没来了,不知道你指的是啥意思
@peng_LX
不是可以下载吗?在文档末尾,下次不理睬这种行为了
首先,不妨建议你装到其他手机上试一下,看能否可行
其次,N95好高级的,将设备号改成0x102032BE试试看可行不
最后,说句实话,我也快小半年没搞过symbian,手上没有智能手机,建议你去论坛看看,如果你真要发邮件给我,那就发frank.sunny@163.com,不过真的未必帮得上忙
本人不用qq
你如果方便就贴出代码或者对照文章仔细查查你哪里不对吧?
最近的事件证明了下,博主的第十条对我有点启迪,不过尝试过失败了,也未必就不好,每个人不可能做到每一步正确

re: [整理]虚拟继承入门 frank.sunny 2008-10-16 22:28
@giscn
的确,这个技术虽然从OO角度来说是存在的,但是我们的确应该避免,说真的,工作了这么久也没有接触过,昨天笔试遇到了这么个概念,才想起翻出来看看,而且要搞透它涉及的OO概念需要很全面很扎实,我也就在别人基础上入入门而已
re: 虚继承与虚基类的本质 frank.sunny 2008-10-16 18:16
语法语义上的解释很连贯,我能看懂
但是模型和性能方面,可能我功力还不够吧

总得来说,让我收获不小
整理得非常好
不过对隐藏的概念应该还可以简化为:基类成员函数中,不满足覆盖条件的派生类同名成员函数,都视为隐藏(既基类方法不能被派生类继承使用)。

而显然满足覆盖的充要条件是:
(a)在基类中函数声明的时候有virtual关键字
(b)基类中的函数和派生类中的函数声明一模一样即函数名,参数,返回类型都一样
re: 从线程角度看AO框架 frank.sunny 2008-10-12 08:19
@luke
谢谢luke,你的提点很有用,我对Windows核心编程之前了解的并不多,在你提点下,又去查了下

进程通常被定义为一个正在运行的程序的实例
线程是cpu分配的基本单位
进程是不活泼的。进程从来不执行任何东西,它只是线程的容器。线程总是在某个进程环境中创建的,而且它的整个寿命期都在该进程中。单个进程可能包含若干个线程,所有这些线程都“同时”执行进程地址空间中的代码。
这个可能大家都知道的

纤程是以用户方式代码来实现的,内核并不知道纤程,并且它们是根据用户定义的算法来调度的。由于你定义了纤程的调度算法,因此,就内核而言,纤程采用非抢占式调度方式。
需要了解的下一个问题是,单线程可以包含一个或多个纤程。就内核而言,线程是抢占调度的,是正在执行的代码。然而,线程每次执行一个纤程的代码—你决定究竟执行哪个纤程。
虽然我不知道symbianOS内核开发的时候是怎么样的,但是我根据symbian活动对象的原理来分析,的确应该就是“纤程”的影子,再次感谢luke的提点
自己再来添点东西
中秋上来两天因为这个转换的事情郁闷到了现在,由于开发时用到了2nd版本,而且是C/S架构的,Server在3rd跑得好好的,到了2nd上运行到PrepareToConvertToOrFromL老是崩溃,后来将mmp中的EPOCSTACKSIZE设成为0x5000程序就ok了,与真正的CCnvCharacterSetConverter没有关系
以上这个实例之所以放在HandleForegroundEventL函数中,只是为了直观和便于理解

在具体编程时,程序需要切换的时候可以遍历任务列表,让找到的任务切换到前台。假如某些程序做了优化任务列表隐藏了的话,我们可以考虑在进程列表内进行查找,然后将这个任务通过SendToBackground和BringToForeground函数进行切换
re: MSP430的时钟问题 frank.sunny 2008-08-19 12:07
@喜欢】


不好意思,一年多没搞了,具体的datasheet都留在公司了,可以参看下跟TimeA相关的寄存器设置

具体实现思路,可以参考:先设置MCLK和SMCLK为DCO,然后TimeA选择为MCLK或SMCLK


@selwin
看你估计是熬夜的人,没有看到文中的链接地址吧
以前文中没有给出下载才要发送,后来考虑大家需要,已经添加下载附件了
代码已发邮箱,望查收
这就对了吗,默认的mmp在group文件夹中,自然默认的资源路径也在group文件夹下了

在START RESOURCE [ECA93FBE].rss

TARGETPATH \private\101f875a\import

HEADER

END
前加上代码
SOURCEPATH ..\data
这样就可以放在data下面了
其实这些都是一个形式,只要了解mmp的编写就知道是怎么回事情了
@ldta100

没遇到过,不介意的话,可以把mmp文件内容给我看下,怀疑是mmp中路径的问题
@ldta100

AutoStart.exe是你需要自启动的程序,也就是你本人的执行程序名称,好比你建了一个工程HelloWorld,那么这个就是HelloWorld.exe

再回答上一个问题,假如你的程序为HelloWorld.exe,那么或许还有一个其它程序叫Hello.exe,如果你想自启动Hello.exe而将代码修改为
#include <startupitem.rh>
RESOURCE STARTUP_ITEM_INFO dispatcher
{
executable_name = "!:\\sys\\bin\\Hello.exe";
recovery = EStartupItemExPolicyNone;
}
那么将不能实现需求

应用程序的id,如果这个程序不是你开发的,你可以装个FExploorer查看得到

我怀疑楼上应该是搞汉化之类的吧,在这一块,本人实在帮不上忙,因为我没有做过

@CJQ
不知道你是不是搞开发的,如果是开发的,那看不懂的话,哪里不明白,你明说

没用搞过symbian S60 SDK开发的话,那我也不知道该如何详细解释了,很抱歉
re: C中如何调用C++函数 frank.sunny 2008-04-15 14:48
@david_fluid@msn.com

没看明白你的意思,没有设置类的实例对象,自然是NULL的啊,你想它的值是多少啊?
而且本实现call_C_f_i和call_C_f_d只是一个接口函数
re: 描述符转换 frank.sunny 2008-03-20 14:28
不知道阁下如何联系,想问下无bom和有bom具体是什么关系啊
我不懂呢,查了下有bom多了内容为“FFFE”,对吧,但是有什么用,能告知下吗
re: 描述符转换 frank.sunny 2008-03-20 13:27
不好意思,刚刚午睡下
你这样是不对的,“_LIT8(KOpentoMap8, "返回我的最爱");"中的"返回我的最爱"是GBK编码的,而_LIT8并非转化为utf-8的,仍然是GBK编码的。这个在symbian中现在一般不推荐使用,只针对ASCII码时是适用的。
关于GBK转化到Unicode另外有代码实现的,也怪自己偷懒老是没有整理这个东西,我有时间整理下吧。
re: 描述符转换 frank.sunny 2008-03-20 12:12
不知道你是怎么考虑的,照理“_LIT8(KOpentoMap8, "返回我的最爱");”这个语句应该是“_LIT(KOpentoMap8, "返回我的最爱");”吧 ?

我不是很清楚你要实现什么目的


re: 描述符转换 frank.sunny 2008-03-20 11:58
阁下连耗时与否都做过比较了,非常感激,但是不知道具体是怎样耗时法,本人未做过这方面的实验。
照理转成utf8应该无问题啊,不知道怎么联系阁下,我的邮箱是:frank.sunny@163.com
re: 再谈sizeof()的问题 frank.sunny 2008-03-04 11:12
非常感谢,说实话,我也不幸中招了

死得很惨,惭愧一下

re: 描述符转换 frank.sunny 2008-03-04 10:50
@myh
好久没来更新了,今天在邮箱里看到来自博客园的邮件感觉好亲切

谢谢myh兄,还自己去做过实验,其实8位到16位的前两个原则只是保证在内存块中数据一致,不放你可以自己调试看看内存里面内容,但是你在显示的时候8位和16位的编码不一样自然就会出现乱码了

其实这个问题还是涉及编码的问题,由于后来项目紧就一直没有更新博客了,myh兄可以采用原则3和4,肯定不会出现乱码的,并且如果是中文,在模拟器上如果采用了中文SDK是不会出现乱码的,在手机上可能还会出现乱码,这个只能以后详细解说了

再次感谢myh兄参与讨论


re: C++的static关键字(转载) frank.sunny 2007-12-14 10:27
其实昨天部门老大找我和另外一个同事聊天,聊起这个静态变量的问题,老大问我们静态全局变量放在哪里的,我就回答说是静态存储区,老大就说其实没有静态存储区,只有堆区和栈区,那想了下应该是在栈区的吧

后来跟我一个同学聊天,问他关于这个问题,他说可以搞个Demo程序看看,后来告知我说静态全局变量是在栈区,而且在普通栈区的后面,我也半信半疑,今早跟一个同事聊天,又说是在bss内,呵呵,小问题,还有大学问,搞明白了VC还可以查看并生成汇编代码,以后慢慢研究
re: 让编译器生成ASM文件及Map文件 frank.sunny 2007-12-14 10:24
非常感谢指点迷津,这个东西,我查了好久才在这里查到,蛮有用的
re: C中如何调用C++函数 frank.sunny 2007-12-08 16:00
@Merlin Ran
其实你所提到的问题,我老早就想到了,但是之前编译通不过,具体代码在此链接下,错误消息你自己编译看看吧,我不知道你是怎么编译通过的,如果你编译通过了,最好可以给份代码在我邮箱里可以吗?
http://www.cppblog.com/Files/franksunny/cCallCppDemoErr.rar

我的邮箱:frank.sunny@163.com
re: C中如何调用C++函数 frank.sunny 2007-11-30 21:01
@梦在天涯
不知道怎么通知你,已经有个实例了,非常感谢你的指出,否则我就那么蒙混过去了

同时感谢大家的关注,希望对实例工程提出更多想法。
re: 描述符Descriptors概念和使用 frank.sunny 2007-10-21 10:19
@Minidx全文检索

呵呵,编译后一般都是APP的,但是也有exe的控制台程序,手机Symbian OS都是以dll的方式调用。不过惭愧至今还没有试过将exe的控制台程序,移到手机上去试过。
不管怎么样要移到手机上,得要打包成sis才可以。
这个问题是关于symbian的文件问题,如果你感兴趣,可以看看我前面有篇Symbian资源文件解析,文后涉足了下各类Symbian文件

不过这里讨论描述符,别让我跑题了哦,呵呵
谢谢参与
总得来说可能现在这里搞Symbian的人还是不多啊
re: 描述符Descriptors概念和使用 frank.sunny 2007-10-21 09:36
@Minidx全文检索


谢谢您来哦,不好意思的很,昨天一天都没上来过,所以本来想写的二也没有完成,今天早上起来看到你的回复。简单的说Symbian是不支持STL的,但是它有自己的与容器相关的类。

至于执行文件的要求,我不知道你指的是什么?


re: 无符号变量居然也能输出-1 frank.sunny 2007-10-18 12:19
果然是这样子,谢谢蚂蚁
我顺着你的符号位扩展的线索网上搜了一下,发现原来有本入门级的书就讲这个的,http://book.csdn.net/bookfiles/169/1001697518.shtml
不知道大家有没有看过,好的话,我也去弄一本,感觉在学校那会没人跟我提到过有这么一个术语呢,是不是有需要空闲时拿来翻翻
re: 无符号变量居然也能输出-1 frank.sunny 2007-10-18 10:45
@Minidx全文检索
楼上谢谢你的关注,咱们讨论讨论哦
像你所说的方法,进过运算,默认0xFFFF是int型的,所以是先计算了一下的,我现在需要考虑的是直接赋值,也就是说如果我想得到正确的值,我默认可以
temp6 = (unsigned short)temp2强转一下就可以了,不用运算。

我想知道short型的变量赋给int型的时候,是什么样的机制,还有就是有符号和无符号的机制是什么样的?
其次就是我是在Windows的VC6环境下调试的,是不是其它环境下也是将0xFFFF变成了0xFFFFFFFF了?
re: 无符号变量居然也能输出-1 frank.sunny 2007-10-18 09:41

其实昨天写了这个东西也没有太去细想,今天看到有人回复,我就跟踪内存调试了下,其实执行到temp6和temp7赋值时,内存中实际存储的是4294967295(也即FFFFFFFF),所以如果不用“%d”输出,改用“%u”输出的话,结果也不是65535,而是4294967295。
当然没有“%ud”这种输出,大概是楼上笔误吧。

至于为什么赋值时赋成FFFFFFFF,而不是0000FFFF,我也不是很清楚,我自己刚开始以为初始化问题,所以先将temp6 = 0;再用temp6 = temp2;发现结果还是一样。这个问题还望高手指点一下啊
re: IP地址与子网掩码 frank.sunny 2007-09-28 09:00
@空情邻

你想问最后一个可用的C类网IP地址吧
我想应该是,这个看过文档应该能算出来的啊,关键是你根据给的大网的IP来算广播地址,广播地址减1就是最后一个IP地址了。

不知道你干嘛用,基础知识你也可以看看http://www.qqread.com/net-knowledge/h171766708.html,以及相关网页
re: IP地址与子网掩码 frank.sunny 2007-09-28 08:51
@114668170
这位仁兄,此文虽然不是我写的,我也是转载别人的,但是我不知道你对子网掩码的理解是怎样,不知道你赞同“掩码的左边部分一定要是全为1且中间不能有0出现”这个观点不?

再有,我不知道你赞同“在得到网络号的基础上,将网络号右边的表示IP地址的主机部分的二进制位全部填上1,再将得到的二进制数转换为十进制数就可以得到广播地址”这个观点不?

欢迎进行讨论,前阵子工作没定下来,所以一直漂,没关心这个空间,不好意思,回晚了

re: Symbian编程起步 frank.sunny 2007-09-24 08:05
在Nokia官方网站就有,你如果真想下google一下也就有了,SDK又不用收钱,下一个不难。
re: SYMBIAN UIQ 开发平台搭建 frank.sunny 2007-09-07 14:22
原来你去年就搞Symbian了啊,我才刚开始学习,不过我是在VC环境下,谢谢分享经验
re: MSP430入门 frank.sunny 2007-07-27 10:33
@dre
因为ACLK是32KHz的啊,自然一秒需要计数32*1024 = 32768次啊
re: 网讯笔试归来 frank.sunny 2007-03-05 22:27
@tx7do

的确如你所说,我也长见识了,呵呵
谢谢你
re: 网讯笔试归来 frank.sunny 2007-03-05 17:01
谢谢如上各位指点,我以后用代码时背景改成灰色好了。

根据大家的建议,我后来改了下代码,改成如下方式:
String::String(const char* m_char) :m_Data(NULL)
{
int m_nLength = strlen(m_char) + 1;
m_Data = new char[m_nLength];
strcpy(m_Data, m_char);
}

String::String(const String &Str) : m_Data(NULL)
{
int m_nLength = strlen(Str.m_Data) + 1;
m_Data = new char[m_nLength];
strcpy(m_Data, Str.m_Data);
}
个人还参考了下memcpy和strcpy的区别,也没说哪个执行效率高些,当然能简化就简化,
谢谢楼上的大侠提点,在你的指点下,认真看了下对齐的东西,你说的也不是很对
上面的题按4边界对齐的话,也要考虑顺序的即 1+(3)+ 4 + 1 = 9
(9 / 4 +1) * 4 = 12
也就前一个类型根据后一个类型扩展
具体我再附上别人的源代码。

struct DATA1
{
char c1; //偏移量0,累积size = 1
char c2; //偏移量1,累积size = 1 + 1 = 2
short si; //偏移量2,累积size = 2 + 2
};

struct DATA2
{
char c1; //偏移量0,累积size = 1
short si; //偏移量1 + (1),累积size = 1 + (1) + 2 = 4
char c2; //偏移量4,累积size = 4 + 1 = 5,但按最大长度sizeof(short) = 2对齐,故最后取6
};

struct DATA3
{
char c1; //偏移量0,累积size = 1
double d; //偏移量1 + (7),累积size = 1 + (7) + 8 = 16
char c2; //偏移量16,累积size = 16 + 1 = 17,但按最大长度sizeof(double) = 8对齐,故最后取24
};

#pragma pack(push,1) //强制1字节对齐
struct DATA4
{
char c1; //偏移量0,累积size = 1
double d; //偏移量1,累积size = 1 + 8 = 9
char c2; //偏移量9,累积size = 9 + 1 = 10
};
#pragma pack(pop) //恢复默认对齐方式

struct DATA5
{
char c1;
double d;
char c2;
};

void main()
{
cout << "sizeof(DATA1) = " << sizeof(DATA1) << endl;
cout << "sizeof(DATA2) = " << sizeof(DATA2) << endl;
cout << "sizeof(DATA3) = " << sizeof(DATA3) << endl;
cout << "sizeof(DATA4) = " << sizeof(DATA4) << endl;
cout << "sizeof(DATA5) = " << sizeof(DATA5) << endl;
}
@清风雨
其实题目是沿用原作者的,我也是学习用的,他本人就是搞嵌入式的,我觉得这个可以搞懂些变量底层的东西

谢谢大侠关心啊,呵呵
re: 关于程序职业的几个方向 frank.sunny 2006-10-25 23:54
主要还是讲嵌入式,不错不错
非常感谢楼上不留名的大侠指点,我还算是个新手,谢谢你一语道破了,这只是一个“位域”概念,本人搜索了一下这一概念,发现有一个人总结的还比较可以的
总结如下:
使用位域的主要目的是压缩存储,其大致规则为:
1) 如果相邻位域字段的类型相同,且其位宽之和小于类型的sizeof大小,则后面的字段将紧邻前一个字段存储,直到不能容纳为止;
2) 如果相邻位域字段的类型相同,但其位宽之和大于类型的sizeof大小,则后面的字段将从新的存储单元开始,其偏移量为其类型大小的整数倍;
3) 如果相邻的位域字段的类型不同,则各编译器的具体实现有差异,VC6采取不压缩方式,Dev-C++采取压缩方式;
4) 如果位域字段之间穿插着非位域字段,则不进行压缩;
5) 整个结构体的总大小为最宽基本类型成员大小的整数倍。


楼上木叶流水兄,看过这个总结不知道是否有更清晰的了解啊,可以看他网页
http://blog.csdn.net/jiyucn/archive/2006/07/01/862085.aspx


常用链接

留言簿(13)

随笔分类

个人其它博客

基础知识链接

最新评论

阅读排行榜

评论排行榜