来北京4个月了才有钱买个显示器-_-!穷的这样子啊。。。。。。以后应该有更多时间更新博客了:)以前没有太多的更新博客并不是因为其他的,而是我当时用的是一台古董的笔记本电脑,基本上速度比得上老爷车,而且自己台式机上的资料都没有,那个痛苦啊。不过,说实话,也不是没有坏处。。。。因为不能用VS2005,于是我总得找一个东西来编程,所以我第3次开始适应VIM,由于这次比上次因为学汇编而使用更加具有强迫性。。。所以,现在我回到公司,感觉VS2005的编辑功能都不好用了:)也才有4个月工作总结上面的那么多关于VIM的信息,呵呵,想起一个问题,一个绝对复杂的问题,总需要一个相对复杂的解决方案,vim对于编辑这个问题,给出了答案,虽然相对复杂,但是实在是很好的解决了这个绝对复杂的问题,自从熟悉了im以后,我的无聊的重复代码输入轻松了很多,都靠q的记录模式和@的重复就可以很简单的完成,作为vim的极大受益着,向所有由于vim的复杂而没有勇气使用的同志推荐一下。
呵呵,本来说自己买了个显示器,会有时间更多的更新博客,竟然说到Vim上去了。。。。。。可见工作以后,我的表达能力和思维已经越来越离谱了。
阅读全文....
回过头来看看以前写的blog,看看自己学习c++工程中写的代码,感觉就像是读完大学来看自己小学写的作文一样….那个稚嫩啊….这样说来,工作以来,虽然我自己没有太注意,其实进步还是挺大的…..毕竟,工作有工作的程序设计理念,这是在学习中永远不会掌握的,不管我看多少C/c++高质量编程指南,Effective C++都没有办法掌握的,自己实践的再多,也是稚嫩的代码….只有工程级的应用才能知道什么叫做软件开发…..唉…..真是这样
阅读全文....
分 3 部分写,工作内容及其解释,实际我做的事,我获得的经验。
阅读全文....
分享一个Lua函数PrintTable,可将任意表结构格式化输出,方便调试,也能用于序列化和配置。
阅读全文....
以下是刚参加工作一个半月的工作总结
阅读全文....
ReadToc(CString Filename)
首先从文件尾反向Seek一个strlen(文件标志)的距离,然后读取文件标志,判断此文件标志.错误即返回INVALID_SIG.
然后再从文件尾反向Seek一个strlen(文件标志)+sizeof(int)的距离,读取一个整数,此整数代表文件数量.当其为0,即返回NOTHING_TO_DO,
然后根据文件数量,循环依次反向的Seek,读取文件名长度,文件名,文件长度,文件在文档中的偏移值.将各文件的信息保存在m_InfoArray数组中,将最后得到的偏移值,保存在m_nTOCSize中,此偏移值即整个文档头的大小.
阅读全文....
23章
结束处理程序
__try{} __finally{}块语句,能保证在运行完__try的语句后能调用__finally{}块中的语句,就算是提前的return,break,continue,goto, 内存访问违规等都可以保证,但是当调用ExitThread或ExitProcess时,将立即结束线程或进程,由于调用TerminateThread或TerminateProcess而结束线程或进程,不会执行__finally块中的代码。
但是在__try块过早退出时,会导致局部展开,影响效率,应该尽量放在外面。
当碰到一些的确需要在块内部使用return时,可以先用__leave关键字代替,以直接从__try块转到__finally,并在最后调用return语句返回,这样避免了局部展开,提高了效率,但是额外的代价是需要加入一个表示函数成功完成的bool变量。
可以在__finally块中调用AbnormalTermination内部函数确定是否是非正常退出__try块,发生局部展开和内存访问违规等都算在内,此时返回true,当自然进入__finally块时,此函数返回false。可以通过这种方式决定到底在__finally块中执行什么代码。不能在其它地方调用。
此结束处理程序的作用:
简化错误处理,提高程序可读性,使代码更容易维护,使用得当具有很小的系统开销。
阅读全文....
读取文件流程:
- 用要打开文档的文件名调用SFileOpenArchive()函数打开文档,得到打开文档的句柄.
- 用上步得到的文档句柄,和要打开的文件名调用SFileOpenFileEx()函数,得到打开的文件句柄.
- 用上步得到的文件句柄,调用SFileReadFile()函数,读取数据.
- 关闭文件,文档句柄.
阅读全文....
MPQ文档布局分析(以暗黑破坏神2的一个补丁patch_d2.MPQ和燃烧远征的一个补丁patch-2.MPQ文档为实例,以下简称D2,P2)
说明:因为MPQ实际上是由很多文件数据组成,包含很多文件,为了区别好MPQ文件与一般文件,这里将MPQ文件在作为一个集合的时候称为文档(ARCHIVE),表示实际存储在硬盘上的一个文件时称为MPQ文件(file),而文件都指保存于MPQ中的一般文件.
说明2:intel x86系统的存储格式都是低位在前(Little-endian),比如一个int32型的数据44(00 00 00 2Ch)存储在文件和内存中实际为2C 00 00 00h,下面不再说明.
说明3:以下以[]后缀中表示此类型一共重复几次,以()前缀表示一个此类型所占字节数.比如(1)char[4]表示此处有4个1个字节的char类型数据.
说明4:本文主要信息来自The MoPaQ File Format 1.0.txt,只是附带个人结合D2,P2后的分析,因为会经常提到原文件,以后简称其为MFF.另外也经常会提到http://www.zezula.net/en/mpq/mpqformat.html一文,简称为MFH.
说明5:在一段文本的开头的十六进制数字都表示文件中的偏移地址,在段中,都以offset +十六进制数字说明此处表示在原文件的偏移地址.
阅读全文....
本文通过汇编代码,剖析了C++函数调用的全过程,包括参数如何传递、函数如何使用栈以及如何返回。
阅读全文....