Delphi
文章平均质量分 55
xinzheng_wang
大道至简
展开
-
Delphi 压缩Access数据库
由于Access数据库在反复使用过程中会自动增大,Delphi压缩Access数据库的简单方法如下:首先要引用ComObj单元function TForm1.CompactMDB(const DBFile, Pwd: string): Boolean;var TempDBFile:string; ConStr:string; JE:OleVariant;be...2012-07-21 12:21:00 · 285 阅读 · 0 评论 -
Delphi编程的一些资料1
手机 SMS PDU 格式参考手册1.相关的GSM AT指令 与SMS有关的GSM AT指令(from GSM07.05)如表1所示: 表1 相关的GSM AT指令 AT 指令 功 能 AT+CMGC Send an SMS command(发出一条短消息命令) AT+CMGD Delete SMS message(删除SIM卡内存的短消息) AT+CMGF Select SMS ...2011-06-16 10:40:00 · 114 阅读 · 0 评论 -
Pascal与C的指针
大家都认为,C语言之所以强大,以及其自由性,很大部分体现在其灵活的指针运用上。因此,说指针是C语言的灵魂,一点都不为过。同时,这种说法也让很多人产生误解,似乎只有C语言的指针才能算指针。Basic不支持指针,在此不论。其实,Pascal语言本身也是支持指针的。从最初的Pascal发展至今的ObjectPascal,可以说在指针运用上,丝毫不会逊色于C语言的指针。以下内容分为八个部分,分别是...2011-05-26 13:49:00 · 261 阅读 · 0 评论 -
Delphi编程中流的应用
一、流的概念流简单说是建立在面向对象基础上的一种抽象的处理数据的工具,它定义了一些处理数据的基本操作,如读取数据,写入数据等,程序员只需掌握对流进行操作,而不用关心流的另一头数据的真正流向。其实,流就是把整个对象转化为一个一个单字节数据,然后形成数据流,其形同把固体石块打碎成一颗颗细小的沙子一样,最后可以形成流沙。二、流的主要功能流的主要功能是对文件与非文件数据相互转换进行操...2011-05-25 11:19:00 · 106 阅读 · 0 评论 -
Delphi ListView基本用法大全
Delphi ListView基本用法大全//增加项或列(字段)ListView1.Clear;ListView1.Columns.Clear;ListView1.Columns.Add;ListView1.Columns.Add;ListView1.Columns.Add;ListView1.Columns.Items[0].Caption:='id';ListView1.Columns...2011-08-22 17:27:00 · 135 阅读 · 0 评论 -
Delphi 将string 转为 Array of AnsiChar
Delphi 将string 转为 Array of AnsiChar的简单方法如下:procedure TMainForm.BitBtn7Click(Sender: TObject);var Str:string; SN: Array [0..7] of AnsiChar; PC:PChar; I:Integer;begin Str := '66778899'; PC :原创 2012-10-16 18:03:42 · 8737 阅读 · 0 评论 -
Delphi 取得SQLServer服务器日期与时间
Delphi 取得SQLServer服务器日期与时间。Function GetSysTime:TDateTime;var Qry: TADOQuery;begin // 取得服务器时间 yyyy-MM-dd HH:mm:ss QryCreate(Qry, frmDM.ADOCon); with Qry do begin Close;原创 2012-10-08 17:55:31 · 4964 阅读 · 2 评论 -
Delphi在C/S架构项目中考虑到SQLServer客户端断电的用户登录问题
在C/S架构项目中,往往限制同一时间一个账号只能登录一次,考虑到客户端突然断电的情况。登录前要验证临时表是否存在,登录后要创建临时表。// 注册已经登录的账户function TfrmLogin.RegUserLogined(AdoConn: TADOConnection; AUserID: string): Boolean;var Qry: TADOQuery; SQLS原创 2012-10-03 13:52:24 · 2147 阅读 · 0 评论 -
Access 中值为空字符串字段与值为null字段的查询问题
在Access中null和空字符串是不同的,若处理不好会带来不少麻烦,特别是在混合查询中。解决的简单方法如下:var SQLStr:string;begin// SQLStr := 'select * from ordertb where 1>0'; if Trim(Edit1.Text)<>'' then SQLStr := SQLStr +' and serialid原创 2012-09-07 18:19:23 · 13004 阅读 · 0 评论 -
Delphi 中Access的 时间日期查询问题
法1:通过Format来格式化SQL,Access中yyyy-MM-dd 型日期与其它条件混合查询,写好SQL语句的格式很重要。 //日期与其它信息混合查询 SQLStr := Format('select * from SysFlag where Event like ''%s'' and '+ 'UserName like ''%s'' and OpTime between原创 2012-09-06 17:03:31 · 6792 阅读 · 0 评论 -
Delphi Unknown picture file extension (.jpg) 错误提示
在用TOpenPictureDialog打开jpg图片时总是有如下错误,并且在瞬间很难发现错误原因:---------------------------Debugger Exception Notification---------------------------Project Project1.exe raised exception class EInvalidGraph原创 2012-08-27 10:14:55 · 6974 阅读 · 1 评论 -
Delphi 判断TImage是否为空及注意事项
Delphi 判断TImage是否为空:1)非空 Image1.Picture.Graphic 2)为空 Image1.Picture.Graphic = nil注意不能用Image1.Picture 来判断。Image1.Picture.Graphic即可直接赋值也可用Assign。Image1.Picture不能直接赋值,只能用Assign。Image1.Pic原创 2012-08-08 09:35:00 · 7617 阅读 · 0 评论 -
Delphi 压缩Access数据库
由于Access数据库在反复使用过程中会自动增大,Delphi压缩Access数据库的简单方法如下:首先要引用ComObj单元function TForm1.CompactMDB(const DBFile, Pwd: string): Boolean;var TempDBFile:string; ConStr:string; JE:OleVariant;begin Co原创 2012-07-21 12:21:38 · 4419 阅读 · 0 评论 -
Delphi TStrings取得Ini文件键值对
Delphi TStrings取得Ini文件键值对的简单方法如下:procedure TForm1.BitBtn1Click(Sender: TObject);var StrList:TStrings; I:Integer; IniCfg:TInifile;begin Memo1.Clear; StrList := TStringList.Create;//TStri原创 2012-07-20 07:37:14 · 3709 阅读 · 4 评论 -
Delphi编程的一些资料2
算法步骤:一、地址部分,用字符串 addr 表示1、将短信息中心号码去掉+号,看看长度是否为偶数,如果不是,最后添加F即 addr = "+8613800755500"=> addr = "8613800755500F"2、将奇数位和偶数位交换。=> addr = "683108705505F0"3、将短信息中心号码前面加上字符91,91是国际化的意思=> a...2011-06-16 10:43:00 · 141 阅读 · 0 评论 -
Delphi编程的一些资料3
一、一般命令AT+CGMI给出模块厂商的标识。 SONY ERICSSONAT+CGMM获得模块标识。这个命令用来得到支持的频带(GSM900,DCS1800或PCS1900)。当模块有多频带时,回应可能是不同频带的结合。 AAB-1021011-CNAT+CGMR获得改订的软件版本。 R6C005 CXC...2011-06-16 10:46:00 · 224 阅读 · 0 评论 -
Delphi TStrings取得Ini文件键值对
Delphi TStrings取得Ini文件键值对的简单方法如下:procedure TForm1.BitBtn1Click(Sender: TObject);var StrList:TStrings; I:Integer; IniCfg:TInifile;begin Memo1.Clear; StrList := TStringList.Create...2012-07-20 07:37:00 · 493 阅读 · 0 评论 -
Delphi 禁用TEdit右键菜单及复制粘贴
Delphi 禁用TEdit右键菜单及复制粘贴简的单方法如下:1) 设置TEdit的ReadOnly属性为True Edit1.ReadOnly := True;2) 在TEdit的OnContextPopup中使Handled := Trueprocedure TFrmReport.Edit1ContextPopup(Sender: TObject; MousePos: ...2012-07-19 11:24:00 · 419 阅读 · 0 评论 -
Delphi2010 无效的类别字符串, ProgID: "ADOX.Catalog"问题
程序中用ADOX创建的Access数据库,一直运行正常,其他电脑都正常,由于某种原因需要修改程序,编译正常,运行时出现了无效的类别字符串, ProgID: "ADOX.Catalog",重装Delphi也无效。DBNew: OleVariant;DBNew := CreateOleObject('ADOX.Catalog');DBNew.Create('Provider=Mic...2012-07-18 09:56:00 · 573 阅读 · 0 评论 -
Delphi中票据凭证的精确打印
一、概述 在银行,税务,邮政等行业的实际工作中,经常涉及到在印刷好具有固定格式的汇款单,储蓄凭证,税票等单据上的确定位置打印输出相关的信息。在此类需求中,精确地定位单据并打印相关信息,是解决问题]的关键。一般情况下,开发者都是通过在打印机上通过重复的测试来达到实际需求。那么,有没有简单有效而又灵活的方法实现上述功能呢? 二、基本思路 分析上述单据的特征,可以发现:此类打印输出的信息一般比较简...2011-04-06 15:13:00 · 178 阅读 · 0 评论 -
Delphi中的接口和抽象类
接口:Interface Delphi中接口的关键字是Interface,但它和Pascal单元中的Interface没有任何联系。1、抽象类Delphi中的抽象类只定义行为的类,它规定了由此派生的类必须具备某些行为。但是抽象类不实现这些行为,而必须由其派生类去实现这些行为。所以,它只是一种“抽象”的类,而且,我们无法为抽象类创建实例。比如这段代码:TCode = class...2010-12-06 16:30:00 · 106 阅读 · 0 评论 -
Delphi 判断数据库表是否存在
//根据表名和一个数据库连接判断表是否存在function TForm1.DBTableExists(aTableName: string;aADOConn:TADOConnection): Boolean;var vTableNames: TStringList;begin Result:=False; vTableNames := TStringList.Create; try aADOC...2011-06-26 12:54:00 · 875 阅读 · 0 评论 -
Delphi、PChar和Char数组的比较
Delphi、PChar和Char数组的比较 string和Char数组都是一块内存, 其中存放连续的字符. string保存具体字符的内存对用户 是透明的, 由Delphi管理它的分配, 复制和释放, 用户不能干预(其实也可以, 不过是通过 非法途径). Char数组就不必说了吧? PChar是一个指针, 它的大小只有32位. 定义时由Delphi自动填0. 要将PChar作为字符串 使...2011-06-22 16:14:00 · 106 阅读 · 0 评论 -
Delphi流的操作
Delphi流的操作一、流的概念流简单说是建立在面向对象基础上的一种抽象的处理数据的工具,它定义了一些处理数据的基本操作,如读取数据,写入数据等,程序员只需掌握对流进行操作,而不用关心流的另一头数据的真正流向。其实,流就是把整个对象转化为一个一个单字节数据,然后形成数据流,其形同把固体石块打碎成一颗颗细小的沙子一样,最后可以形成流沙。二、流的主要功能流的主要功能是对文件与非文件...2011-06-22 14:34:00 · 157 阅读 · 0 评论 -
Delphi 分隔GSMModem接收到的短信字符串
Delphi 分隔GSMModem接收到的短信字符串 function TForm1.SplitStr(const SourceStr, SplitChar: AnsiString): TStringList;vartemp:AnsiString;i:Integer;cStr:AnsiString;beginResult:=TStringList.Create;//如果是空字符串则返回空列...2011-06-20 10:37:00 · 100 阅读 · 0 评论 -
通过注册表获取当前所有串口号
usesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls, ExtCtrls, Buttons,Registry;typeTIntArray=Array of Integer; function TForm1.GetComPorts:TIntArray;...2011-06-16 15:49:00 · 631 阅读 · 0 评论 -
短信文本模式下的解码方法
接收短信有两种编码格式: 1.中英文混合的为unicode 2.英文的为7BIT编码。 以7BIT编码为例子,如接收到PDU码为 0891683108502905F0040D91685159296028F30000701021216182230947759B4C0F93E967 08 //短消息中心长度 91 //短消息中心有国家编码 没有为81 683108502905F0//短信中心号码 68...2011-06-16 10:57:00 · 184 阅读 · 0 评论 -
Delphi编程的一些资料5
十三、SIM卡工具箱命令AT+STSF配置工具箱实用程序。AT+STIN工具箱指示。AT+STGI获得从SIM卡发来的预期命令的信息。AT+STCR主动提供的结果:工具箱控制反应。AT+STGR给出响应。允许程序或用户从主菜单上选择项目,或响应某些命令。...2011-06-16 10:53:00 · 156 阅读 · 0 评论 -
Delphi编程的一些资料4
七、追加服务命令AT+CCFC呼叫继续。AT+CLCK呼叫禁止。AT+CPWD改变追加服务密码。AT+CCWA呼叫等待。AT+CLIR呼叫线确认限制。AT+CLIP呼叫线确认陈述。AT+COLP联络线确认陈述...2011-06-16 10:48:00 · 184 阅读 · 0 评论 -
Delphi 禁用TEdit右键菜单及复制粘贴
Delphi 禁用TEdit右键菜单及复制粘贴简的单方法如下:1) 设置TEdit的ReadOnly 属性为True Edit1.ReadOnly := True;2) 在TEdit的OnContextPopup中使Handled := Trueprocedure TFrmReport.Edit1ContextPopup(Sender: TObject; MouseP原创 2012-07-19 11:24:36 · 4017 阅读 · 0 评论 -
Delphi2010 无效的类别字符串, ProgID: "ADOX.Catalog"问题
程序中用ADOX创建的Access数据库,一直运行正常,其他电脑都正常,由于某种原因需要修改程序, 编译正常,运行时出现了无效的类别字符串, ProgID: "ADOX.Catalog",重装Delphi也无效。 DBNew: OleVariant; DBNew := CreateOleObject('ADOX.Catalog'); DBNew.Create('Provider=M原创 2012-07-18 09:56:09 · 3926 阅读 · 0 评论 -
通过注册表获取当前所有串口号
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, Buttons,Registry;type TIntArray=Array of Integer; function TForm1.GetComPorts:TInt原创 2011-06-16 15:49:00 · 2587 阅读 · 0 评论 -
Delphi短信猫编程的一些资料4
七、追加服务命令AT+CCFC呼叫继续。AT+CLCK呼叫禁止。AT+CPWD改变追加服务密码。AT+CCWA呼叫等待。AT+CLIR呼叫线确认限制。AT+CLIP呼叫线确认陈述。AT+C转载 2011-06-16 10:48:00 · 2870 阅读 · 0 评论 -
Pascal与C的指针
<br />大家都认为,C语言之所以强大,以及其自由性,很大部分体现在其灵活的指针运用上。因此,说指针是C语言的灵魂,一点都不为过。同时,这种说法也让很多人 产生误解,似乎只有C语言的指针才能算指针。Basic不支持指针,在此不论。其实,Pascal语言本身也是支持指针的。从最初的Pascal发展至今 的Object Pascal,可以说在指针运用上,丝毫不会逊色于C语言的指针。<br /><br />以下内容分为八个部分,分别是<br />一、类型指针的定义<br />二、无类型指针的定义<br />三、转载 2011-05-26 13:49:00 · 2630 阅读 · 0 评论 -
Delphi中票据凭证的精确打印
<br />一、概述<br /><br /> 在银行,税务,邮政等行业的实际工作中,经常涉及到在印刷好具有固定格式的汇款单,储蓄凭证,税票等单据上的确定位置打印输出相关的信息。在此类需求中,精确地定位单据并打印相关信息,是解决问题]的关键。一般情况下,开发者都是通过在打印机上通过重复的测试来达到实际需求。那么,有没有简单有效而又灵活的方法实现上述功能呢?<br /><br /> 二、基本思路<br /><br /> 分析上述单据的特征,可以发现:此类打印输出的信息一般比较简短,不涉及到文字过长的折行处转载 2011-04-06 15:13:00 · 1277 阅读 · 0 评论 -
Delphi中如何控制打印方向,纸张大小等
如何在程序里控制打印纸张大小(A3,A4)和打印方向?不想打开设置窗口 --------------------------------------------------------------- Uses Printer; ......... procedure TForm1.Button1Click(Sender: TObject); var ADevice, AD转载 2011-04-02 16:37:00 · 8074 阅读 · 0 评论 -
字体样式与字符串间的转换
<br />//---------------------将字体样式转化为字符串--------------------------<br />function TFrmRptSetup.SetFontStyle(FS: TFontStyles): string;<br />var<br /> StrFS:string;<br />begin<br />//<br /> StrFS:='[';<br /> if fsBold in FS then<br /> StrFS:=StrFS +'fsBold原创 2011-03-25 17:25:00 · 1229 阅读 · 0 评论 -
StringGrid文字居中
<br />procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer; <br />Rect: TRect; State: TGridDrawState); <br />var <br />Str: String; <br />R: TRect; <br />begin <br />with StringGrid1 do <br />begin <br />Canvas.FillRect(Rect); <br />St原创 2011-03-10 12:58:00 · 6166 阅读 · 1 评论 -
StringGrid操作大全
<br />(1)正确地设置StringGrid列宽而不截断任何一个文字方法是在对StringGrid填充完文本串后调用SetOptimalGridCellWidth过程<br />-----------程序片断-------------------------------------------------<br /> (*<br /> $Header$<br /> Module Name : General/BSGrids.pas<br /> Main Program : Several.<br />原创 2011-03-10 10:52:00 · 3261 阅读 · 0 评论 -
Delphi中关于资源释放(Free,Relealse,FreeAndNil)
根据日常编程经验,得出一些Delphi中关于资源释放的体会。假如有对象Obj为TObject类型:1。Obj.Free直接释放资源后,调用OnDestroy事件,但是没有将Obj指针值置为Nil。2。Obj.Release 等待资源不再使用后释放资源,同样不修改Obj指针为Nil,所以在OnDestroy中最好使用Release进行资源释放操作。3。局部变量释放资源时,可以考虑用FreeAndNil()释放资源,这样效率会高些,能提高内存的利用率。4。单纯通过Assigned(Obj)判断对象是否已经创建是原创 2011-03-09 10:00:00 · 4031 阅读 · 0 评论