第二部分:基类 TCodeColor
一、本章说明 暂时先公开基类代码,和子类的部分代码,子类中字符分析函数 Analyzer 的实现暂时不公开,主要出于这样的考虑: 1、基类已实现大部分共用功能,但是还不完善,代码也不规范。特别是各个版本的 Analyzer 中都会用到这些功能,所以待听取路高手的意见,将基类改进完善后,将重写 Analyzer 并在第三部分中公开; 2、如果您急于使用本程序,有两种方法:一是您可以留下邮箱地址,我会寄给您一份程序;二是利用并不完善基类 TCodeColor 继承出一个子类,自己实现 Analyzer ,字符分析的方法可以参考 李马 的 行云流水网站 提供的 C 语言版 《Pascal 词法分析器》源代码; 3、欢迎大家提出宝贵意见、想法,同时尽可能的留下相应的解决方案。
二、用户端 很简单,不做过多说明:
//┏━━━━━━━━━━━━━━┓//┃代码着色:CodeColor v1.0 ┃//┃来自:悄然无声的 Blog ┃ //┗━━━━━━━━━━━━━━┛procedure TfrmMain.Button1Click(Sender: TObject);var cc:TCodeColor;begin cc:=TCC_Delphi.Create(''''gainsboro'''',720); cc.Source:=Memo1.Text; cc.Processor; Memo1.Text:=cc.OutPut; Memo1.Lines.SaveToFile(''''result.htm'''');end;
二、基类 TCodeColor 也很简单,在注释中已有详细说明。IsAlpha 和 IsNumberic 都用的土方法,或许还有更好的实现方法。IsMBCSChar 是经过滚龙的三次指点才变成现在这个样子的,原先叫 IsHZ ,所以欢迎大家指点一二。
//┏━━━━━━━━━━━━━━┓//┃代码着色:CodeColor v1.0 ┃//┃来自:悄然无声的 Blog ┃ //┗━━━━━━━━━━━━━━┛unit CodeColor;interfaceuses Classes,SysUtils;type TCodeColor = class(TObject) protected FOutPut: string; //处理后的 Html 文本 FSource: string; //处理前的源文本 FPosition: Integer; //当前被处理字符的位置 FBGColor:string; //Html 中表格的背景颜色 FWidth:string;//Html 中表格的宽度 ReserveWords: TStrings;//关键字 //抽象的字符分析函数,便于在子类中有不同的实现 procedure Analyzer; virtual; abstract; //下面四个函数在子类中的 Analyzer 中使用 function GetNextChar: Char;//返回下一个字符 function IsAlpha(const ch: Char): Boolean; //判断是否是字母 function IsMBCSChar(const ch: Char): Boolean;//判断字符是否为多字节字符 function IsNumberic(const ch: Char): Boolean; //判断是否是数字 public constructor Create(const bgColor:string;width:Integer); property Source: string write FSource;//属性:设置源文本 procedure Processor;//处理机 property OutPut: string read FOutPut; //属性:返回处理后的 Html 文本 end; implementation{********************************** TCodeColor **********************************}constructor TCodeColor.Create(const bgColor: string; width: Integer);begin FBGColor:=BGColor; FWidth:=InttoStr(width);end;//处理机 procedure TCodeColor.Processor;begin FPosition:=0; FOutput:=''''''''; while(FPosition<Length(FSource)) do begin Analyzer; end; FOutput:=''''<TABLE BGCOLOR="'''' + FBGColor + ''''" '''' + ''''B
[1] [2] [3] 下一页
Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved. 闵涛 E_mail:admin@mintao.net(欢迎提供学习资源)
鄂公网安备 42011102001154号
站长:MinTao ICP备案号:鄂ICP备11006601号-18