Delphi一句话帮助
1.如果想你的程序能够正确处理异常情况的话,请引用SysUtils.pas单元,否则即使程序使用了try。。。except。。。也不能正确捕获异常。
2.定义常量字符串的一种方式
resourcestring
aa='aaaa';
raise Exception.CreateRes(@aa);
3. 字符串常量数组的初始化
const constarray:array [0..2] of string=(‘first’,’second’,’third’);
4. 结构体初始化
type Tstructinit=record
A1:integer;
A2:array [0..2] of integer;
End;
Const m_structinit:Tstructinit=(A1:0;A2:(0,1,2));
5. 多维数组的长度
var array2:array of array of integer;
setlength(array2,2,2);
6.使用Create和New开辟的空间都存在于堆中,不能自动释放,建议使用FreeAndNil释放, 参数以及局部变量存在于栈中,自动释放。
7.SizeOf不适合于对象,返回的总是4;对于固定类型可以正确返回.
8. Create(nil)需要手工释放,Creat(self)会随着拥有者的释放而释放.
9.动态改变已定义常量的值
procedure ChangeConst(const Const;var Value;Size:Integer);
begin
Move((@Value)^,(@Constant)^,Size);
End;
10.进行删除操作的时候循环使用DownTo,会避免错误.
11. 汉字的Ascii码>128,可以用它来判别是否为汉字
12. dll编写中,需要使用Sharemem单元来引用BORLANDMM.DLL内存管理.
13. PostMessage只将消息放到消息队列中,需要排队等待处理。
SendMessage绕过消息队列直接发送到窗口过程,等到消息处理返回值才返回.
14.鼠标移入移出消息:CM_MOUSEENTER,CM_MOUSELEAVE
15. 关机消息WM_QUERYENDSESSION
16.可以利用ThintWindow和类的方法ActivateHint来创建浮动窗体.
17.调出文件属性对话框
uses ShellAPI;
function ShowFileProperties(FileName: String; Wnd: HWND):Boolean;
var
sfi: TSHELLEXECUTEINFO;
begin
with sfi do
begin
cbSize := SizeOf(sfi);
lpFile := PAnsiChar(FileName);
Wnd := Wnd;
fMask := SEE_MASK_NOCLOSEPROCESS or SEE_MASK_INVOKEIDLIST or SEE_MASK_FLAG_NO_UI;
lpVerb := PAnsiChar('properties');
lpIDList := nil;
lpDirectory := nil;
nShow := 0;
hInstApp := 0;
lpParameters := nil;
dwHotKey := 0;
hIcon := 0;
hkeyClass := 0;
hProcess := 0;
lpClass := nil;
end;
Result := ShellExecuteEX(@sfi);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowFileProperties('c:/AA.txt', Handle);
end;
18. 更改系统时间
uses Windows,Dialogs,Forms;
var MyTime:TsystemTime;
begin
FillChar(MyTime,sizeof(MyTime),#0);
MyTime.wYear:=2003;
MyTime.wMonth:=06;
MyTime.wDay:=01;
If not SetSystem(MyTime) then
Showmessage(‘Failure’);
End;
19.复制文件夹Xcopy
. procedure Xcopy(SourceDir,DestinationDir:String);
var
Search : TSearchRec;
Rec : word;
Begin
SourceDir := SourceDir + '/';
Rec := FindFirst(SourceDir + '*.*', faAnyFile, Search);
While Rec = 0 Do
Begin
If Search.Name[1] <> '.' Then
Begin
If (Search.Attr And faDirectory) = faDirectory Then
Begin
Windows.CreateDirectory(PChar(DestinationDir + '/' + Search.Name), nil);
FileSetAttr(DestinationDir + '/' + Search.Name, FileGetAttr(SourceDir + '/' + Search.Name));
X_Copy(SourceDir + '/' + Search.Name, DestinationDir + '/' + Search.Name);
end
Else
Begin
CopyFile(PChar(SourceDir + '/' + Search.Name),PChar(DestinationDir + '/' + Search.Name), True);
FileSetAttr(DestinationDir + '/' + Search.Name, FileGetAttr(SourceDir + '/' + Search.Name));
Application.ProcessMessages;
end;
end;
Rec := FindNext(Search);
end;
FindClose(Search);
end;
20.绘制透明位图
procedure DrawTrans(DestCanvas: TCanvas; X,Y: smallint; SrcBitmap: TBitmap; AColor, BackColor: TColor);
var ANDBitmap, ORBitmap: TBitmap;
CM: TCopyMode;
Src: TRect;
begin
ANDBitmap:= NIL;
ORBitmap:= NIL;
try
ANDBitmap:= TBitmap.Create;
ORBitmap:= TBitmap.Create;
Src := Bounds(0,0, SrcBitmap.Width, SrcBitmap.Height);
with ORBitmap do begin
Width:= SrcBitmap.Width;
Height:= SrcBitmap.Height;
Canvas.Brush.Color := clBlack;
Canvas.CopyMode := cmSrcCopy;
Canvas.BrushCopy(Src, SrcBitmap, Src, AColor);
end;
with ANDBitmap do begin
Width:= SrcBitmap.Width;
Height:= SrcBitmap.Height;
Canvas.Brush.Color := BackColor;
Canvas.CopyMode := cmSrcInvert;
Canvas.BrushCopy(Src, SrcBitmap, Src, AColor);
end;
with DestCanvas do begin
CM := CopyMode;
CopyMode := cmSrcAnd;
Draw(X,Y, ANDBitmap);
CopyMode := cmSrcPaint;
Draw(X,Y, ORBitmap);
CopyMode := CM;
end;
finally
ANDBitmap.Free;
ORBitmap.Free;
end;
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
DrawTrans(Image1.Canvas, 0,0, Image2.Picture.Bitmap, clBlack, clSilver);
end;
21. 获取CPU速度
function GetCpuSpeed: Extended;
var
t, mhi, mlo, nhi, nlo: dword;
shr32 : comp;
begin
shr32 := 65536;
shr32 := shr32 * 65536;
t := GetTickCount;
while t = GetTickCount do ;
asm
DB 0FH,031H // rdtsc
mov mhi,edx
mov mlo,eax
end;
while GetTickCount < (t + 1000) do ;
asm
DB 0FH,031H // rdtsc
mov nhi,edx
mov nlo,eax
end;
Result := ((nhi * shr32 + nlo) - (mhi * shr32 + mlo)) / 1E6;
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
label1.Caption := FloatToStr(GetCpuSpeed) + 'mhz';
end;
Delphi一句话帮助相关推荐
- 闪存备份,记录平时一些小随笔
1. 终于将所有旧系统的控件都升级到了Delphi 2010 ! [2010-01-18 10:33:55] 2. 测试python3.2,要升级的话有许多代码要修改. [2011-03-17 09: ...
- Delphi 之Copyrect的使用
http://cqujsjcyj.iteye.com/blog/380970 Copyrect的使用(图片复制.放大.以及做图片放大镜等) 一.从一个选取一个区域中的图象到另一个图象组件中的固定区域 ...
- Delphi - 使用字符串时,一个注意地方
技术交流,DH讲解. 一句话,结构体里面,避免使用String,要使用Array[N..M] of char,或者String[N]. 肯定有兄弟要问,为什么,其实最先我也不知道,因为我觉得用stri ...
- Delphi的四舍五入函数
Delphi的四舍五入函数 一.四舍五入法 四舍五入是一种应用非常广泛的近似计算方法,其有算术舍入法和银行家舍入法两种. 所谓算术舍入法,就是我们通常意义上的四舍五入法.其规则是:当舍 ...
- Delphi的单元文件详解
Delphi的单元文件详解 Delphi单元文件 1.库单元文件头:其中声明了库单元的名字. 2.Interface部分: 由保留字interface开始,结束于保留字implementation ...
- DELPHI 7 动态链接库DLL断点调试
DELPHI 7 动态链接库DLL断点调试 马根峰 (广东联合电子服务股份有限公司, 广州 510300) 作者博客: CSDN博客:http://blog. ...
- Delphi DLL制作和加载 Static, Dynamic, Delayed 以及 Shared-Memory Manager
一 Dll的制作一般分为以下几步: 1 在一个DLL工程里写一个过程或函数 2 写一个Exports关键字,在其下写过程的名称.不用写参数和调用后缀. 二 参数传递 1 参数类型最好与window C ...
- delphi基本语法
//delphi中exit,abort,break,continue 的区别 exit: 退出函数体 abort: 遇到异常,安静处理,就是不显示不提示 break: 退出当前循环体,包括for ,w ...
- Delphi 对象的创建(create)与释放(free/destory)
Delphi 对象的创建(create)与释放(free/destory) 1.Create参数为:nil/self/application的区别,最好能看到实际效果的区别 例如: My := TMy ...
最新文章
- pop弹框 点击弹出外任意区域消失
- DSP集成开发工具CCS的Git工具使用说明(一)
- Google Breakpad 完全解析(二) —— Windows前台实现篇
- Android Studio对于Java8特性的支持
- 2节点CentOS7 PackStack安装Newton
- Thymeleaf 基本用法总结
- javascript开发后端程序的神器nodejs
- SharePoint 数据迁移解决方案
- 前端学习(1939)vue之电商管理系统电商系统之完成全部功能
- Java关键字synchronized的简单理解
- 从俄罗斯方块到星际2,全都用得上:DeepMind无监督分割大法,为游戏而生
- 怎么在html mui中找到下拉刷新,HelloMUI例子中的下拉刷新
- 【预测模型】基于BP神经网络实短时交通流预测matlab代码
- 口才训练方法——速读法、背诵法
- 人工智能简史+电子版原文
- 牛顿迭代法实现开根号
- 设备树学习之(一)GPIO中断
- Android so 文件全部报错:Duplicate resources
- MYSQL设置初始密码
- 外部电源和锂电池自动切换电路
热门文章
- 【数据结构笔记05】堆栈及其顺序存储、链式存储
- java中map类型_Java中Map类型遍历的两种方式对比
- 一次数据库上云迁移性能下降的排查
- archman linux教程,Archman GNU/Linux 2020-01 发布,基于Arch的Xfce桌面发行版
- 深入PHP内核之ZVAL
- git 远程仓库回滚
- matlab db(X R),matlab操作sqlite数据库
- 修改现有用户帐户的 Microsoft Lync Server 2010 属性
- java lambda 变量_java – 从lambda表达式引用的局部变量必须...
- kuka机器人外部轴异步_KUKA机器人外部轴标准配置