CodeColor相关(一) 背景

类别:Delphi 点击:0 评论:0 推荐:

?         第一部分:背景

        一、本人背景
        专业:土木工程;工作:空军某场站战勤参谋;在工作中使用计算机主要是文本编辑,编程序纯属个人爱好,业余中的业余编程爱好者,由于水平实在有限,此次公开代码着实下了好大一番决心 。

        二、程序背景
        到 CSDN 的 Blog 浏览时,发现大部分源码添加进网页后格式都丢失了,再加上没有语法着色,看起来比较困难。偶尔发现有的网页中显示的代码和在 IDE 中的效果一样,就想到如果用 Delphi 写这样一个小程序,先把要写入网页中的源代码用 Html  语法处理一下,然后再粘贴进网页,就可以达到想要的效果了。

        写这个程序遇到的第一个困难是 Delphi 词法分析器,由于不是学计算机专业的,对此一窍不通,为此专门到书店买了一本《编译原理》,把词法分析部分看了几天,结果只知道有“正规表达式”和“有限自动机”这两个概念,到底这两个概念该怎么运用还是一无所知。

        写到这里,要感谢 李马  和他的 行云流水网站  提供的 C 语言版 《Pascal 词法分析器》源代码,好在大学时学的 C 语言还没丢,我用 Delphi 改写了他的程序,并针对语法上色和格式化进行了功能扩展。程序写完后基本上实现了我想要的功能,自己的想法实现了,当时的感觉非常兴奋。

处理效果如下:
//┏━━━━━━━━━━━━━━┓
//┃代码着色:CodeColor v1.0  ┃
//┃来自:悄然无声的 Blog     ┃      
//┗━━━━━━━━━━━━━━┛

//判断字符是否为多字节字符
function TCodeColor.IsMBCSChar(const ch: Char): Boolean;
begin
  Result := (ByteType(ch, 1) <> mbSingleByte);
end;

        三、程序的缺陷
        毕竟是业余的,程序中可能还有很多缺陷,功能也比较单一,特别是许多解决问题的方法在专业程序员眼中可能“很土”,说到这里又要感谢一个人:滚龙 ,正是他以严谨的作风对我的一个小函数提出了三次改进意见(在这里),才让我决定把代码公开让大家审查并改进。

        四、程序进度
        2005年1月26日:初步完成;     
        2005年1月27日:1、增加了对中文变量的支持;2、固定了表格的宽度;3、设定了表格背景颜色;
        2005年1月29日:重新组织了程序结构,设计了三个类:TCodeColor、TCC_Delphi、TCC_CSharp;C# 部分还未实现,但预留了接口;

        五、声明
        这仅仅是个很小的程序,如果觉得对您还有用,欢迎随意使用和改进,转贴请注明出处。如果可能的话,改进的程序请拿出来大家分享。

本文地址:http://com.8s8s.com/it/it4348.htm