摘要: 这样做,有没有问题???? TGateInfo = record Socket: TCustomWinSocket; sIPaddr: string; sReceiveMsg: string; UserList: TList; dwKeepAliveTick: LongWord; end; pTGateInfo = ^TGateInfo; 上面正常的信息结构,当然里面包含了一个链表对象,呵呵。procedure TFrmMain.GSocketClientConnect(Sender: TObject; Socket: TCustomWi... 阅读全文
posted @ 2012-08-24 22:07 一笑如风 阅读(705) 评论(0) 推荐(0) 编辑
摘要: 谈论了很多关于目前环境的话题,现在是否可以开始讨论主要的题目了? 好吧,是需要理清楚思路的。 在开发里面,我常常在想,如何提高编程的速度和编程的质量。 我考虑了面向对象的模式,但是我发现,它并不能够解决任何问题,相反会带来很多问题。 于是我把编程开发提升到设计开发上面,效率会如何呢,我们来看下。 姑且不讨论这种模式的各方面问题。 因为有美术设计的经验,我们是否可以借鉴一下设计的模式来设计编程开发??? 首先我们定义概念,这个是个什么样的软件,功能定性?或者是市场定性?? 针对什么样子的市场???居于什么样的概念??? 很复杂,算了,简单一点。 说功能。 一个软件包含很... 阅读全文
posted @ 2012-08-23 21:19 一笑如风 阅读(1553) 评论(0) 推荐(0) 编辑
摘要: 我想还是有必要花点时间来整理一下思路的,就是说有必要写一些什么吧。 博客园有一点不好的地方是:没有自己的客户端,我不喜欢安装那些乱七八糟的程序。 虽然博客园提供了一个居于微软的软件,但是我不喜欢使用它,其实我不明白的是为什么博客园还要采用第三方的软件? 博客园应该有自己的客户端!理由有很多。 虽然我们大家都喜欢鼠标一点击,立即进入到属于自己的领地里面,而不是通过第三方的浏览器。 事实上是我很不喜欢浏览器,只是目前太忙了,以后有时间我一定做自己的程序,完全废弃使用第三方的浏览器来采集资料。 唠叨了一下,烦不烦?呵呵,OK,到此为止! 看了一下刘艺的模式编程,好吧,我承认,我... 阅读全文
posted @ 2012-08-23 21:12 一笑如风 阅读(1022) 评论(1) 推荐(0) 编辑
摘要: 是不是一定需要安装DB2000这个数据库?? 最初我也不太肯定,因为我还没有看源代码。 现在看了,完全可以不必安装和配置这个玩意了,没有必要。 看下面就应该知道没有这个必要—— 1 //加载物品数据 2 function TFrmDBSrv.LoadItemsDB(): Integer; 3 var 4 i, Idx: Integer; 5 StdItem: pTStdItem; 6 nRecordCount: Integer; 7 resourcestring 8 sSQLString = 'select * from StdItems'; 9 begin10 ... 阅读全文
posted @ 2012-08-14 22:33 一笑如风 阅读(914) 评论(2) 推荐(0) 编辑
摘要: 看了源代码,相信大家都知道IGE的源代码出自飞尔早期泄露的源代码。 说真的,这些混乱和不合理以及低水准的编程水平和方式不是韩国程序员的错。跟他们没有关系。 服务端的程序尽可能减少不必要的开销,哪有什么东西都挤到一起的?? 就拿服务器启动器来说,配置项目以及开区清理这些,不应该放在主窗体上面进行处理。 看到无尽长的代码挤在一份主执行文件里面,你的感受会如何?? 架构结构一定要合理,为什么,因为合理就等于是合理分配资源。 为什么不应该在主窗体文件里面处理这些东西,因为我们知道,配置文件一旦生成,服务器启动后,这些东西就没有用了。 可是它们这些超大量的控件和各种代码的开销仍然是不可... 阅读全文
posted @ 2012-08-13 08:13 一笑如风 阅读(949) 评论(1) 推荐(0) 编辑
摘要: 有些人提倡当在结构里面包含字符串类型的时候最好采用定长的方式。 比如像下面这样: TCSInfo = record Cs_Str :String; Count :Integer; CS_Str2 :String; end; 如果Cs_Str在这里不采用定长的方式,那么当采用SizeOf()获取结构的大小的时候,可能得不到正确的大小值。 另外这个首位成员变量的值,很有可能出现随机值的情况,就是你已经给它赋了值,在当前的显示是正确的,但是—— 如果把该结构保存为结构文件的时候,下次打开取值的时候就会出现随机值的情况。 但是后面的变量的值是正常的,所以如果字符串变量... 阅读全文
posted @ 2012-08-12 17:09 一笑如风 阅读(2514) 评论(2) 推荐(0) 编辑
摘要: 平时我不太在意使用 := 来进行赋值。 有次,在做一个程序测试的时候,请一个朋友提供帮助,他告诉我,程序最大的问题是出现在: 采用 := 方式来进行赋值。最后的结论是我的基础不行。 呵呵~我一向很谦虚。 后来我不断地看代码,一行行地看,希望找出这些采用:= 有啥问题。 因为我很明白,也许我把某个内存地址弄错了,但是绝不会是我的基础不行。 因为:= 这种情况分好几种。 通常的理解是值复制的方式,但是值也要看啥值,如果是指针就另当别论了。 而我不关心这些赋值是否是基础的问题,因为程序大部分操作的都是指针。 指针赋值分两种情况,一种是直接采用@把该指针自身的地址赋给变量,一种是... 阅读全文
posted @ 2012-08-11 17:35 一笑如风 阅读(3087) 评论(0) 推荐(0) 编辑
摘要: 首先开始服务端的源代码重新架构。 为什么选择IGE源代码是有原因的,或者我认为他的源代码结构不是很混乱吧。 毕竟不是全部照抄,只需要了解它的执行逻辑结构,然后重新按照自己的想法来实现。 这个很重要,只要看下去就会明白。 服务器有几个需要注意的地方: 第一、内存碎片,这个需要注意,否则服务器会在长时间运行后,性能会越来越差。 1、内存碎片的产生多出现在内存的不断分配和释放上面。 2、对象的创建和析构也会产生内存碎片。 3、结构化的参数——这个是听说的,具体没有试验。 第二、内存的使用,这个是这篇文章的重点。 。。。。。。。。。。。。。。。。。 看了服务端... 阅读全文
posted @ 2012-08-11 16:38 一笑如风 阅读(998) 评论(0) 推荐(0) 编辑
摘要: 这段时间看了不少的传奇的源代码。 感觉一个字,烂,不是一般的烂。 我相信大家都知道。 同时大家肯定明白,如果重新优化和架构,效率肯定要比原来的代码要高很多很多倍。 首先说一个地方,virtual和dynamic,虚方法和动态方法。显然代码里面大部分都是采用动态方法,这个要命啊,慢啊。 关于虚方法和动态方法的最大区别是,虚方法速度快,比动态方法快多少倍未知。缺点是费空间。动态方法费时间省空间。 一般我们是不经常调用而且速度不是居于首位的时候,我们采用动态方法。相反经常调用频繁,而且速度居于首位的,我们采用虚方法。 这些是毫不迟疑的。 但是那些(大家明白的源代码)为什么采用动态... 阅读全文
posted @ 2012-08-04 18:30 一笑如风 阅读(1085) 评论(1) 推荐(0) 编辑
摘要: 现在很多新游戏层出不穷,尤其是国内开发的。 OK,对于国内的新游戏,你的持久度是几分钟? 好吧,我最多坚持5分钟左右。 其实一开始我就想卸载游戏了。或者看了游戏视频我就不打算去下载这样的游戏。 为什么呢,你还认为这些雷同的方式还值得你继续探索下去?? 是的,看看啥叫——【探索】。 这些还大把大把地扔钱的人是否会考虑这两个字? 此一时彼一时,现在不同往日了。不要以为这些雷同的东西会让玩家投入下去。 当你进入游戏的时候,系统就急着提示你,噢,你有任务了。 任务简单啊,啥都不需要看,你只管点击几下任务按钮就行,然后人物就跑啊跑啊,之后是莫名其妙地升级了。 看到了吧,我用了莫名... 阅读全文
posted @ 2012-07-24 13:56 一笑如风 阅读(540) 评论(2) 推荐(0) 编辑