Subject: 可否增加中文语法扩展功能? [Print This Page]
Author:
zy1227 Time: 2006-2-23 12:05 Subject: 可否增加中文语法扩展功能?
既然是中文专家包,那么使Delphi支持中文语法后就更加完美了。
目前已经有类似的功能,详见:http://mujweb.cz/www/ufospace/
能否将此功能整合进来?
Image Attachment:
preview.gif (2006-2-23 12:05, 41.51 K) / Download count 385
http://bbs.cnpack.org/attachment.php?aid=207
Author:
zjy Time: 2006-2-24 09:02
就是有些花工夫,要自己把设计期和运行期所有涉及到名称检查的地方都修改掉。
CnWizards 的源码中有一个函数 Hook 单元 CnWizMethodHook.pas,下面这个例子替换掉了最基本的 IsValidIdent 函数,你可以把它放到包里面安装一下,就可以在 IDE 的设计器中使用中文组件名,不过代码编辑器还是会报错。根据这个方法,中文支持理论上是可行的,就是要花水磨功夫一处一处去修改。CnWizards 目前还不考虑开发这个功能,如果谁有兴趣,可以做为一个单独的子项目开发。
unit CnDelphi;
interface
uses
Windows, SysUtils, CnWizMethodHook;
implementation
type
TIsValidIdentFunc = function (const Ident: string): Boolean;
var
OldProc: TIsValidIdentFunc;
Hook: TCnMethodHook;
function CnIsValidIdent(const Ident: string): Boolean;
const
Alpha = ['A'..'Z', 'a'..'z', '_'];
AlphaNumeric = Alpha + ['0'..'9'];
var
I: Integer;
begin
Result := False;
if (Length(Ident) = 0) or (not (Ident[1] in Alpha) and (Ident[1] < #$A1)) then
Exit;
for I := 2 to Length(Ident) do
if not (Ident[I] in AlphaNumeric) and (Ident[I] < #$A1) then
Exit;
Result := True;
end;
initialization
OldProc := TIsValidIdentFunc(GetBplMethodAddress(@IsValidIdent));
Hook := TCnMethodHook.Create(@OldProc, @CnIsValidIdent);
finalization
FreeAndNil(Hook);
end.
Author:
yzdbs Time: 2006-2-24 10:38
Delphi2005以上版本 就已经带这个功能了
Image Attachment:
{A3B17B37-6A2C-41BC-A728-0986E15D4574}.JPG (2006-2-24 10:38, 105.05 K) / Download count 430
http://bbs.cnpack.org/attachment.php?aid=208
Author:
zy1227 Time: 2006-2-24 18:28
呵呵,我试过Delphi2006,但是组件是不能用中文命名的。
Author:
MSTAR Time: 2006-2-28 11:37 Subject: 太过分了
还是习惯了用 E 文
Author:
agamem Time: 2006-2-28 12:58
敲中文不嫌累么??
Welcome to CnPack Forum (http://bbs.cnpack.org/) |
Powered by Discuz! 5.0.0 |