关于TPerlRegEx类使用上的一些经验
最近工作时遇到了一些关于html解析方面的开发,下面说说在使用正则表达式时遇到的一些问题。[@more@]在delphi里可以使用类TPerlRegEx来实现对正则表达式的调用。TPerlRegEx中有几个函数和属性我们在开发中会经常用到,如Subject、RegEx、Match、AgainMatch、SubExpressions、Replacement和ReplaceAll等等。由属性或函数名我们不难推测出他们的功能,这里不详细介绍属性和函数的功能,做几个实例供大家参考。查找指定格式的字符串我们要在字符串中查找类似如下格式的所有字符串,dse_sessionId=6Ee0Y05AkhLUeO4R8nenMvM,做过web开发的朋友
取得gbk编码
在使用indy编程开发时,一般会接触到编码的一些知识,这里我简单说说我在开发时涉及关于取得gbk编码的问题。[@more@]得到字符串GBK编码,简单的说就是一个ansi文本,用ultraEdit打开时使用Hex方式查看时所看到的文本编码。function ToHexString(s: string; encode: TEncoding): string;var TmpStr: string;ByteAy: Tbytes;tmpByte: Byte;beginByteAy := encode.GetBytes(s);TmpStr := '';for tmpByte in ByteAy doTmpStr := Format('%s%.2x', [tmpstr, tmpbyte]);Result := TmpStr;end;var s: String;begin s := edt1.Text; edt1.Text
关于ListView控件使用时的一些心得
最近在使用Delphi过程中发现ListView控件说道不少,列举如下,1.ListView在创建时必须要指定Parent,否则不能正常调用。2.建议不要使用ListView做为局部变量保存数据。 原因占用大量内存,严重影响屏幕刷新,如与DevExpress皮肤一同使用极有可能出现异常。[@more@]
com注册会自动执行的代码段
如果在程序内部使用了initialization(或finalization)来执行初始化(或析构),那么在com注册时他们将会被执行。[@more@]这一点一定要注意,因为delphi2010 IDE目前还无法对com注册时在代码段initialization或finalization自动执行代码的报错提示有帮助的信息。最直接的处理方式是将单元文件中initialization或fianlization中的代码由自己控制,而不是交给initialization或finalization。
delphi中回调函数差异
回调函数有两种形式,用在类里面的和类外的。前者在定义回调函数时需要在声明最后加上of object以区分在类外调用情况。具体举例如下,[@more@]类外情况:TCallBack = procedure(Param1: Integer;Param2: String;...ParamX...);TXClass = class(TObject)FCallBack: TCallBack;property OnCallBack: TCallBack read FCallBack write FCallBack;procedure CallBack(Param1: Integer;Param2: String;...ParamX...);TXClass.CallBack(Param1: Integer;Param2: String;...ParamX...);beginif Assigned(FCallBack) ThenFCallBack(Param1, Param2,
让delphi在调试时不监视指定异常
在调试程序时,可能需要让delphi不拦截某些异常,这时我们可以设置debugger options中的language exceptions来完成。下面举例说明如何让delphi在调试时不拦截EOleError,[@more@]打开Tools|Options|Debugger Options|Language Exceptions在右面的Excetpion types to ignore列表中增加EOleError即可。同样,当你在调试程序时,在delphi弹出的Debugger Exception Notification对话框中选择了“Ignore this exception type”后,又想恢复此种异常拦截时,即可用上述方法的反向来实现了。
将devexpress控件皮肤移出exe方案
1.首先利用dxSkinEditor.exe制作你所需要的皮肤资源文件,最终得到资源文件集合x.skinres2.利用如下两个函数 dxSkinsUserSkinPopulateSkinNames dxSkinsUserSkinLoadFromFile 来完成资源文件调用,实现窗体皮肤变更。它们在单元dxSkinsDefaultPainters.pas中;[@more@] 举例: 第一步,载入皮肤资源文件 cxComboBox1.Properties.Items.Clear; dxSkinsUserSkinPopulateSkinNames(ExtractFilePath(ParamStr(0))+'bs.skinres', cxComboBox1.Properties.Items); cxComboBox1.ItemIndex:=0; 第二步,调用皮肤 dxSkinControl