
Delphi 相关技术
missmecn
这个作者很懒,什么都没留下…
展开
-
关于Delphi的Combox乱码问题的研究
待写原创 2008-04-15 09:31:00 · 986 阅读 · 0 评论 -
Delphi播放声音文件类(包括调整其中任意一个声音的大小)
<br />自行封装的播放声音类文件 TSoundPlayer , 用MCI播放的。<br /> <br />但是TSoundPlayer类无法提供针对每个声音的大小调节,比如一个背景音乐,一个前景音乐。<br /> <br />为此,我安装了MMTools2.0,在窗体上放上MidiPlayBg:TMMDSMidiChannel控件和TMMDSWaveMixer控件,<br />并且进行关联,就可以调用TMMDSMidiChannel.Volume来设置音量了MidiPlayBg.Volume := -1原创 2010-09-19 21:02:00 · 3967 阅读 · 0 评论 -
SQLServer访问类(带连接池和存储过程演示实例)
<br />unit JaSQLDBAccess;<br />interface<br />uses<br /> SysUtils, Classes, Windows, DateUtils, ADODB, ActiveX, SyncObjs;<br />type<br /> TSQLServerQuery = class;<br /> { TAdoConnPoolItem - ADO连接池项 }<br /> <br /> TAdoConnPoolItem = class(TObject)<br /原创 2010-10-09 10:25:00 · 1597 阅读 · 1 评论 -
MessageBox常用参数
这个问题困扰了我很长时间,一直都没解决,最后发现竟然是自己严重无知。问题情况是这样的:程序弹出一个MessageBox后切换到其他窗口,然后再切换回来时无法显示MessageBox窗口,必须用Alt+Tab切换才能出来。今天实在可不过去了,就好好Google了一下,最后竟然发现是MessageBox参数问题,其实非常简单只要在Flags上加上MB_APPLMODAL 标记就可以了。详细请看下面的介绍: Message_Box TypesMB_ABORTRETRYIGNORE The message box原创 2011-04-16 20:23:00 · 1215 阅读 · 0 评论 -
Delphi结构中使用String时遇到的内存泄露问题
先定义一个结构:TUserInfo = record UserID: Integer; // 用户编号 UserName: string; // 用户名end;然后编写如下代码:procedure TForm1.Timer1Timer(Sender: TObject);begin User.UserName := StringOfChar('A', Ran原创 2011-12-23 10:58:27 · 1985 阅读 · 0 评论 -
Delphi编写服务端程序注意事项
1. 声明结构时尽量不要在结构中用到string和动态数组 因为很多时候为了清空结构都会使用到FillChar,用FillChar清空结构时会导致string和动态数组的内存无法释放 2. 尽量少使用动态数组,比如TIntegerArray 因为动态数组频繁分配内存,对稳定性造成很大影响 3. 需要使用大量内存时可以使用线程相关的缓存来避免内存频繁分配原创 2011-12-23 11:28:10 · 1118 阅读 · 0 评论 -
Delphi中复制带有String的记录结构时不能使用Move之类的内存操作函数
请看下面的代码: program TestRecord;{$APPTYPE CONSOLE}uses SysUtils, Math;type TRecordA = record Name: string; end;procedure RunTestRecord;var R1, R2: TRecordA;begin R1.Na原创 2011-12-24 11:19:22 · 1924 阅读 · 0 评论 -
Delphi中模态窗口切换时隐藏问题的解决办法
问题 现象: 弹出模态窗体,切换到Window其他窗口,再回到程序界面,发现界面无法点击,模态窗口被遮盖在后边了解决办法: TForm1 = class(TForm) protected procedure CreateParams(var Params: TCreateParams); overr转载 2012-03-01 10:15:37 · 3846 阅读 · 1 评论 -
RichView中插入动态Gif图像注意事项
以下是封装的一个函数:procedure RichViewAddPicture(RichEdit: TRichViewEdit; const TagStr: string; Stream: TMemoryStream; IsGif: Boolean);var LGraphic: TGraphic;begin if IsGif then begin LG原创 2012-03-07 10:26:03 · 2537 阅读 · 2 评论 -
RichView的几个封装函数(插入文本和图片)
//移动光标到最后procedure RichViewMoveCaretToEnd(RichEdit: TRichViewEdit);var ItemNo, Offs: Integer;begin ItemNo := RichEdit.ItemCount-1; if ItemNo > 0 then begin Offs := RichEdit.GetO原创 2012-03-07 10:30:27 · 4431 阅读 · 0 评论 -
Delphi中获取Unix时间戳及注意事项
uses DateUtils;DateTimeToUnix(now)可以转换到unix时间,但是注意的是,它得到的时间比c语言中time()得到的时间大了8*60*60这是因为now是当前时区的时间,c语言中time()是按格林威治时间计算的,北京时间比格林威治时间多了8小时DateTimeToUnix(now)-8*60*60 就和c语言中time()得到的一样了原创 2010-09-08 12:58:00 · 22804 阅读 · 2 评论 -
Delphi使用StrToDatetime在不同操作系统出现不同的情况
[代码] Str:= '2010-4-13 06:22:22'; StrToDateTime(Str); 现象:在WinXP, Win2003 都不会报错但是在Windows7,Windows Server 2008 上,报 ‘xxx’ is not a valid date and time 错误后来发现不同操作系统的默认的 短日期样式 是不同的WinXP, Win2003 默认短日期样式是 xxxx-xx-xxWindows7,转载 2010-09-08 12:42:00 · 4182 阅读 · 0 评论 -
用Delphi编写Win2000服务程序
<br />一、Win2000服务简介<br /> 服务程序(Service Application)是一种运行于WinNT的后台程序,每个服务程序(Service Application)中可能包含若干个服务(Service),每个服务就是其中的一个线程(该服务也可以创建多个子线程)。采用服务,应用程序可以获得特殊的权限,而且不会被用户通过Win2000的任务管理器直接结束程序,所以服务常常用来实现一些特殊的目标。<br /> 通过Win2000控制面板中的服务管理工具,我们可以设置/查看服务的特性:转载 2010-09-04 20:46:00 · 688 阅读 · 0 评论 -
Delphi 中TWebBrowser的扩展控件TExWebBrowser
主要扩展了3D界面、右键菜单、是否显示图片、是否支持JAVA等功能。代码如下: unit ExtWebBrowser;interfaceuses Windows, SysUtils, Classes, Controls, OleCtrls, SHDocVw, ActiveX, Forms, URLMon;type TDocHostUIInfo原创 2008-04-15 09:33:00 · 2480 阅读 · 2 评论 -
我的Delphi开发经验谈(本人修改版)
开发环境-------- Delphi 7是一个很经典的版本,在Win2000/XP下推荐安装Delphi 7来开发软件,在Vista下推荐使用Delphi 2007开发软件。安装好Delphi 7后,应立即安装Delphi 7 Update Pack 1,Delphi 2007则建议尽量安装最新的版本。工欲善其事,必先利其器,为了提升开发效率,为了能更加得心应手的处理接下来的开发工作,原创 2008-10-02 10:11:00 · 3224 阅读 · 0 评论 -
自动修改Delphi工程文件(dpr)的编译版本号
软件截图: Delphi工程的版本修改只能通过Project/Options/Version Info来手动修改,当我们有几十个项目需要同时修改版本时,就会被折腾的累死。本人就是因为要维护一个项目,而这个项目有50多个不同的版本,需要更新版本的时候,几乎所有的工程都得手动改一遍,费时费力费神。于是,我就产生了编写一个批处理修改项目版本的工具的想法,并立即付诸实现。 首原创 2008-10-01 17:46:00 · 6790 阅读 · 1 评论 -
Delphi读写UTF-8、Unicode格式文本文件
// UTF-8文件写入函数procedure SaveUTFFile(const FileName: string; S: string; WriteHeader: Boolean = True);var MemStream: TMemoryStream; HeaderStr: String;begin if S = then Exit; MemStream := TM原创 2008-10-01 22:09:00 · 4905 阅读 · 0 评论 -
Delphi中实现智能指针
在C++中可以利用栈实现智能指针,可是在Delphi中由于所有的对象都是堆对象,无法利用栈对象。虽然在Delphi2007版本中已经有类似的栈结构,但是仍然不能实现完全意义上的指针。但是Delphi中可以利用另外一样东西实现智能指针--接口。附上源码:unit AutoPtr;interfaceuses SysUtils, SyncObjs;type原创 2008-10-04 22:04:00 · 1519 阅读 · 0 评论 -
Delphi 2007 Update4中的Bug列表
查看地址: http://dn.codegear.com/article/37483以下是几个经常碰到的问题:QC#ProjectArea52256DelphiVCL/Core VCL Classes/TApplicationDescription:Steps:Taskbar button is not hidden when原创 2008-10-07 10:32:00 · 3018 阅读 · 0 评论 -
提升Delphi编程效率必须使用的快捷键(Delphi2007版本)
1. [CTRL+空格] [CTRL+SHIFT+空格]这两个快捷键都是在代码编写过程中用到的,起提示作用,使用频率最高。 CTRL+空格: 在当前光标处提示有哪些变量、函数可以使用。这个功能对于无法准确写出函数名非常有用,你不需要去记住每个函数的名字,只需要在提示选项中选择,这样你仅需要输入几个字母就可以完成整个变量或者函数的输入。不过很不幸的是通常情况下输入法占用了这个快捷键,让原创 2008-10-05 14:49:00 · 3611 阅读 · 0 评论 -
Delphi中for、while 使用注意事项
循环查找并删除指定条件元素:program Project2;{$APPTYPE CONSOLE}uses SysUtils, Classes;var StrList: TStringList; J: Integer;procedure DeleteByWhile;var I: Integer;begin I :原创 2008-10-06 12:34:00 · 9889 阅读 · 0 评论 -
线程事务同步执行器
在编写多线程程序时,有时候会遇到这种情况: 一个线程需要修改某一个数据 而其他线程在高频访问数据,如果直接更改数据,可能导致数据更改不全,因此更改数据的线程需要通知其他所有的线程暂停执行。因此我写了如下程序:{*************************************************************************}{原创 2008-10-15 16:23:00 · 955 阅读 · 0 评论 -
Delphi主窗口任务栏菜单的问题
Delphi的VCL框架在创建应用时TApplication是一个自动创建的隐藏窗口,其它创建的窗口是自动以该窗口为窗口,这就导致创始的主窗口在任务栏的系统菜单只有三项,只要在主窗口的Create事件中将系统菜单用Application的系统菜单替换,并将SysCommand消息转发到主窗口就正常了。 unit Unit1;interfaceuses Windows, Messa原创 2010-02-23 14:33:00 · 1650 阅读 · 2 评论 -
TRichView控件的常用用法(增加文本和图片)
unit UnitFrmMain;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, RVStyle, RVScroll, RichView, RVEdit, ComCtrls;type TFormMain原创 2012-07-31 10:54:53 · 4477 阅读 · 2 评论