字符串、字符数组、数组、指针关系总结。
【规则】
1、string为普通类型,不是数组型,只是其内容为字符串;
2、’a’和”a”的区别:’a’为字符,”a”为字符串;单引号只能定义一个字符,双引号可以定义多个字符,即字符串。
3、指针可以通过加减、自加减改变其值,数组不可以。
4、以数组定义的字符串可以修改其中的字符,以指针定义的字符串不能修改其中的字符。
阅读全文 »
【规则】
1、string为普通类型,不是数组型,只是其内容为字符串;
2、’a’和”a”的区别:’a’为字符,”a”为字符串;单引号只能定义一个字符,双引号可以定义多个字符,即字符串。
3、指针可以通过加减、自加减改变其值,数组不可以。
4、以数组定义的字符串可以修改其中的字符,以指针定义的字符串不能修改其中的字符。
阅读全文 »
一直觉得,在通往牛X的道路上,不做个编辑器出来,那肯定表示离目标还很远。
虽然我知道,就算我做了出来,我还不算个牛X。

tsc是趋势内部的一个脚本语种,但是一直没有一个好的编辑器,于是我抽空做了个。
开发平台Visual C# 2005
时间大大小小的,整合起来大概1个星期左右。
今天终于发布出1.6的beta版出来,其他一些功能,比如skin + 定制 的功能还没做好。
要让我说,做这个东西最大的感悟是什么。
我首先想到的就是,整个开发与语言本身相关很少,或者说,与语言特性没有多少关联。
如果要说c#的优势,我最大的感受就是,剪贴复制等操作,c#都已经封装好了,直接调用就可以。但那不是核心。
我心目中的核心是:
1·做一个IDE要考虑到的小细节
2·逻辑换行和物理换行
3·当textbox里的字符串发生textchange事件时,处理一系列判断的逻辑。
4·语法高亮 和 代码提示的效率
5·集成编译时 的文件处理
这些核心问题,都是我自己摸索出答案的,并没有copy & paste,因此我感到成长不少。其中涉及到win api的一些模块,真的是十分难debug。
1·做IDE你要考虑很多问题,你不能只考虑程序的核心模块的逻辑,你必须一开始就把自己想象成在使用这个IDE,从打开文件,到关闭文件,每一步操作,都要模拟用户操作来实现。
2·这是个大难题。我没有在网上发现现成的好的代码。至少在C#方面,我认为我是第一个实现物理换行和逻辑换行的。首先,行号的实现,由于考虑到对齐问题,因此采用了picturebox的paint重绘,而没有采用最简单的两个textbox的方法——因为后者会导致不对起。行号实现后,逻辑行和物理行的问题出现。比如,一行允许20个字符,但是你输入了30个字符,没有按回车,那后10个字符会自动作为下一行,这在物理行上是2行,但是在逻辑行上确实1行,因此在显示行号的时候就要区分开。
3·检测到textbox里的文字是否发生变化,有几个方法:onTextChange()、onKeyUp()、onKeyDown(),要考虑好这几个事件的执行顺序。而且有语法高亮的问题,因此先判断什么,后判断什么,就十分重要。此时,dubug是个非常好的工具。
4·语法高亮。这个也是个核心。字符串的匹配、着色,并且要考虑到效率,是个难题。其中,注释判断是个核心,因为涉及到字符串的嵌套的问题。代码提示不难,但是有个form之间的focus的切换、以及传递数据,也是需要精心考虑一下的。
5·这部分,我印象较深的就是,当前文件夹的设定。
总的来讲,做一个IDE收获还是挺多的,很锻炼逻辑和思考的全面性。
记下来,供自己以后学习,也许还能给别人点帮助。
over