
Delphi
YanJinrong
这个作者很懒,什么都没留下…
展开
-
FDQuery Out of memory 错误
TFDQuery执行查询后,将数据载入到控件时,会按照数据库中“字段定义长度 * 返回的记录数”初始化内存数组(注意,是定义的字段长度,不是字段内容的实际长度),如果“字段定义长度 * 返回的记录数”计算出的内存达到2G,就会报Out of memory错误。原创 2024-04-26 05:23:48 · 269 阅读 · 1 评论 -
DevExpress使用摘要
OnClick事件中写入代码:原创 2022-08-11 14:46:11 · 330 阅读 · 1 评论 -
比较两个文件是否相同(比较两个流是否相等)
代码】比较两个文件是否相同(比较两个流是否相等)转载 2022-08-10 12:38:40 · 559 阅读 · 0 评论 -
Delphi修改FMX Label字体颜色
注意:颜色需要使用TAlphaColors类,不能象VCL中那样使用颜色。原创 2022-08-10 12:03:37 · 902 阅读 · 0 评论 -
Delphi调用Android的so文件
至于上面的GetDocumentsPath 或者别的目录也可以 参看TPath的说明,和so文件存放目录有关系,另外值得注意的事传递的字符串Delphi中是双字节的。转载 2022-08-10 11:40:43 · 434 阅读 · 0 评论 -
减小Delphi XE以上编译出来的文件大小
自从Delphi2010中引入了新的RTTI反射机制后,编译出来的程序会变得很大,这是因为默认情况下 Delphi2010 给所有类都加上了反射机制。而我们的工程并不每每都需要使用到这个功能,所以对于不需要使用的地方,我们可以简单的用下面的方法禁用RTTI反射,从而大 大减小文件体积。禁用的方法很简单,就是要在工程(dpr文件中。1.引用的单元会影响EXE和DLL的大小,把Uses中不需要的单元去掉,可以变小一些。另起炉灶,把你的程序要用到的变量,函数,类型拷贝到另一个同名的pas文件中,编译时不用。...转载 2022-08-08 06:39:12 · 1039 阅读 · 0 评论 -
Inno Setup 为程序创建桌面快捷方式
IconIndex:指定的文件中使用的以零为基点的图标索引,这是因为有些Icon可以存放在.dll文件中,例如操作系统中的shell32.dll文件,保存有100多个图标,如果IconFileName指定的是该文件(一般位于C:\WINDOWS\system32目录下),那么IconIndex就指定了使用哪个图标。Parameters:快捷方式的可选命令行参数,如果编写的是一个命令行方式的可执行文件,额可以通过该选项传递参数,一般的可执行文件都不需要该选项。...转载 2022-08-08 06:20:33 · 3405 阅读 · 0 评论 -
Inno Setup 自定义脚本
#13#13 '版权所有 (C) 中天VIP工作室', mbInformation, MB_OK);Wizardform.WizardBitmapImage.left:= WizardForm.width-164 //自定义安装向导图片显示位置(显示大小,此处为居右显示)//这儿必须定义,数值根据图片宽度更改,显示软件名称的位置。...转载 2022-08-08 06:18:50 · 1085 阅读 · 0 评论 -
Delphi创建Windows快捷方式
如果我们编写的程序能自动创建快捷方式,将大大方便用户的使用。但是如何在程序中建立快捷方式呢,下面我们给出一个实例。es语句中要加入ComObj、ActiveX和ShlObj这三个单元。如果不行,再加shellapi单元.由于我们是通过OLE Interface实现此功能的,因此在程序单元的us。以上编写了一个通用函数,下面我们用它来创建快捷方式。...转载 2022-08-08 06:13:48 · 337 阅读 · 0 评论 -
Delphi 基本算法
进行一次竞赛,总时间T固定,有若干种可选择的题目,每种题目可选入的数量不限,每种题目有一个ti(解答此题所需的时间)和一个si(解答此题所得的分数),现要选择若干题目,使解这些题的总时间在T以内的前提下,所得的总分最大,求最大的得分。{对所有边按权值递增排序,存于e[I]中,e[I].v1与e[I].v2为边I所连接的两个顶点的序号,e[I].len为第I条边的长度}{s[n]为前n个物品的重量和}F[I,j]=f[i-1,j-w[i]] (w[I]< =j< =v) 边界:f[0,0]:=true....转载 2022-08-08 05:42:38 · 504 阅读 · 0 评论 -
Delphi编写的程序在Win7以上提升权限(以管理员身份运行)
Delphi程序要实现在win7下以管理员身份运行,必须潜入一个res文件,操作步骤如下:1) 首先编辑一个文本文件,命名为*.manifest (例如uac.manifest)转载 2022-08-07 10:51:29 · 1024 阅读 · 0 评论 -
Delphi float浮点值转换整型int 方法
Trunc 截取整数,小数不要。Round 四舍五入取整。Ceil 往大取整。Floor 往小取整。原创 2022-08-07 09:37:59 · 1998 阅读 · 0 评论 -
GetSystemMetrics()函数的用法
可以用GetSystemMetrics函数可以获取系统分辨率,但这只是其功能之一,GetSystemMetrics函数只有一个参数,称之为「索引」,这个索引有75个标识符,通过设置不同的标识符就可以获取系统分辨率、窗体显示区域的宽度和高度、滚动条的宽度和高度。为了使使GetSystemMetrics的功能,我们以获取系统分辨率为例,并将其中的两个值用TextOut输出到窗体中。第一步:用GetSystemMetrics获取屏幕的宽度和高度int x, y;x = GetSystemMetrics(SM_C转载 2022-08-07 09:15:03 · 921 阅读 · 0 评论 -
Delphi开发的App如何调用外部App
代码】Delphi开发的App如何调用外部App。转载 2022-08-07 09:06:45 · 585 阅读 · 0 评论 -
Delphi和JAVA数据类型对应关系
Delphi和JAVA数据类型对应关系所在单元文件:Androidapi.JNI.JavaTypes。转载 2022-08-07 09:04:25 · 428 阅读 · 0 评论 -
无法定位程序输入点InitializeSRWLock于动态链接库KERNEL32.dll 上
某些程序在XP执行时会报错“无法定位程序输入点InitializeSRWLock于动态链接库KERNEL32.dll上”,原因为该程序所需要的支持库XP不存在,改用WIN7以上操作系统即可。原创 2022-07-19 05:04:58 · 3153 阅读 · 0 评论 -
Delphi的日期时间格式
1、日期时间格式化为字符串 edit2.text:=formatdatetime( 'yyyy年mm月dd日hh点nn分ss秒',now);2、将程序初始化为指定的日期时间格式(在程序初始化时处理) System.SysUtils.FormatSettings.DateSeparator := '-'; System.SysUtils.FormatSettings.ShortDateFormat := 'yyyy-mm-dd'; System.SysUtils.FormatSettings.原创 2022-07-12 04:43:43 · 4670 阅读 · 0 评论 -
TOpenDialog选择文件时异常卡死并退出程序的问题
Delphi10.4.2在WIN10中,TOpenDialog在选择文件时,如果文件无法识别的,或是识别错误的,点击文件、或预览缩略图,或是选中文件后点击鼠标右键,就会报指针错误,或是整个程序直接异常卡死,然后整个程序就会被强制中断退出。但是在IDE里又可以正常打开,只是编译后执行就死机。 最典型的情况是用手机、数码相机拍的高分辨率图片,然后通过Adobe PhotoShop CC修改过的图,无论存成什么格式,大概率都会引起这种错误, Delphi的对话框是...原创 2022-04-06 01:45:02 · 520 阅读 · 0 评论 -
RegisterClass引起的内存报错问题(Runtime 217)
注册类时,如果同时存在同名类,能正常编译通过,但是程序运行时会报 217内存错误,例如:RegisterClassAlias(TJAVCLCustomer,'TfrmDCCustomer');RegisterClass(TfrmDCCustomer);这样写法,编译时是无错误的,执行就出错了。...原创 2022-03-31 04:16:38 · 678 阅读 · 0 评论 -
TeeChar Pro安装
1、卸载自带的TeeChar Std:Component--Install Packages--移出Teechar Std相关的包。2、切换Windows的语言区域为英文(美国):控制面板--区域--管理--更改系统区域设置,改为英文(美国),重启计算机。3、执行TeeChar Pro的TeeRecompile,选择当前IDE版本进行重新编译,安装(编译过程中选择移除旧版本包)。4、安装完成后,将Windows的语言区域切换回中文(简体),重启计算机。...原创 2021-03-25 13:32:03 · 393 阅读 · 0 评论 -
FMX和VCL混用时RegisterClass无法GetClass或FindClass的问题
FMX和VCL混用时,因为FMX.Controls里有ActivateClassGroup(TFmxObject),Vcl.Controls里也有个ActivateClassGroup(TControl),一旦切换到FMX的ClassGroup,VCL就无法找到类,处理方法是在主窗口创建时或是初始化时,强制切换到TWinControl:initialization StartClassGroup(TWinControl) ActivateClassGroup(TWinControl)...原创 2020-08-06 15:59:14 · 397 阅读 · 0 评论 -
关闭程序Close、Halt、Application.Terminate、ExitProcess的区别
Close:主窗体Close或接到WM_QUIT消息时,会触发OnCloseQuery、OnClose、OnDestory事件,并自动调用Application.Terminate关闭程序。Halt:触发OnDestory事件,并强行终止应用程序(非正常退出方式)。Application.Terminate:直接关闭整个程序,包括所有窗体,触发OnDestory事件。ExitProcess(0):直接强制终止程序,不触发任何事件(非正常退出方式)。...原创 2020-07-22 11:56:59 · 803 阅读 · 0 评论 -
获取程序执行的命令行参数
在主窗体的OnCreate事件中,可以获取程序执行时的命令行参数:ParamCount:传入的参数个数ParamStr(0):执行程序的文件名(全路径,等同Application.ExeName)ParamStr(n):执行程序时传入的第n个参数,从下标1开始,到ParamCount结束例如:程序命令行:"D:\Test\Project1.exe" -abc -123procedure TForm1.FormCreate(Sender: TObject);var i: Inte.原创 2020-07-14 12:34:50 · 979 阅读 · 0 评论 -
手动触发异常
使用raise可以手动触发异常:raise Exception.Create('Error Message'); //不带格式化参数raiseException.Create('Error Message:%d',[100]); //带Format格式化参数其中:Exception是异常类,也可以使用其他异常类或自定义的异常类。...原创 2020-07-14 11:16:18 · 550 阅读 · 0 评论 -
调用时自动创建类对象
方法一:通过函数访问对象,如对象未创建,则自动创建,并返回该对象,示例:unit Unit1;interfaceuses System.SysUtils;type TSample = class end;function Sample: TSample;implementationvar _Sample: TSample;function Sample: TSample;begin if _Sample = nil then _Sample := TSamp...原创 2020-07-12 17:02:45 · 268 阅读 · 0 评论 -
通过窗体类方法创建并显示窗体
在窗体类中增加类方法,通过该类方法创建并显示窗体,其他具有类似应用场景的类也可以通过相同的方法处理。type TForm1 = class(TForm) private { Private declarations } public { Public declarations } class function ShowForm: Integer; end;var Form1: TForm1;implementation{$R *.dfm}cla...原创 2020-07-12 16:44:22 · 331 阅读 · 0 评论 -
类方法
类方法是一种特殊的方法,它们在声明和实现时都要以class开头,它具有以下特点:1、类方法可以通过类名和对象名调用,使用类名调用时,可以不实例化。2、类方法不能访问类中声明的属性、变量和普通方法。3、类方法可以调用类中的其他类方法。示例: type TSample = class private FValue: Integer; public procedure NormalProc1; class procedure ClassP...原创 2020-07-12 16:34:20 · 3992 阅读 · 0 评论 -
访问其它单元类的保护属性
同单元中的类可以互相访问保护属性(声明在protected中的属性和方法),如果需要访问其他单元的,则需要在本单元声明一个用于引用的类,将对象转换为该引用类即可访问。以Label对象为例:type TCrackLabel = class(TCustomLabel);procedure TForm1.btn1Click(Sender: TObject);begin ShowMessage(TCrackLabel(Label1).GetLabelText); //Label1是已有的标签...原创 2020-07-12 15:59:43 · 140 阅读 · 0 评论 -
防止程序重复执行:通过类名或窗口名
在程序初始化前,检查同类名或是同窗口名的程序是否执行,如果有执行,则强制退出程序。在项目头文件中加入代码,需要引用Winapi.Windows示例:program Project1;uses Vcl.Forms, Winapi.Windows, Unit1 in 'Unit1.pas' {Form1};{$R *.res}begin //如果使用类名,改为FindWindow(PChar('TForm1'),nil) //TForm1是主窗体类名,Form1是主窗...原创 2020-07-12 15:27:20 · 218 阅读 · 0 评论 -
通过类名或窗口名判断程序是否已执行
通过FindWindow查找指定类名或窗口名的程序句柄,,如果返回值不为0,则程序已经运行。其中:类名是指主窗体的窗体类名,窗口名是应用程序的标题,如果同时指定类名和窗口名,则必须是类名和窗口名都相同才能获取句柄。示例:usesWinapi.Windows;//通过窗口标题判断程序是否已经运行function AppIsRunByWindowName(AWindowName: string): boolean;begin Result := FindWindow(nil,PCha.原创 2020-07-12 15:06:16 · 356 阅读 · 0 评论 -
Delphi动态生成控件
一、不可视,以创建一个按钮为例:var Button1: TButton;begin Button1 := TButton.Create(Self); Button1.OnClick := DoClick; //绑定事情响应函数,如果有的话end;二、可视,以上述按钮为例,如果需要在界面上显示,需要指定Parent及Pos,如下:var Button1: TButton;begin Button1 := TButton.Create(Self); Button1.O...原创 2020-07-10 12:03:46 · 1189 阅读 · 0 评论 -
Delphi隐藏/显示Windows桌面上的图标
//隐藏桌面上的图标procedure DesktopHideIcon;var h: THandle;begin h := FindWindow('Progman', nil); ShowWindow(h, SW_HIDE);end;//显示桌面上的图标procedure DesktopShowIcon;var h: THandle;begin h := FindWindow('Progman', nil); ShowWindow(h, SW_SHOW);end;...原创 2020-07-10 11:51:22 · 412 阅读 · 0 评论 -
Delphi隐藏窗口标题栏
//隐藏窗口标题栏procedure FormHideTitle(AForm: TCustomForm);begin SetWindowLong(AForm.Handle, GWL_STYLE, GetWindowLong(AForm.Handle, GWL_STYLE) AND NOT WS_CAPTION); AForm.ClientHeight := AForm.Height;end;原创 2020-07-08 17:25:11 · 841 阅读 · 0 评论 -
Delphi显示Windows“关于”对话框(ShellApi)
ShellAbout ( Handle, '应用程序名称', '你的名字', Application.Icon.Handle );原创 2020-07-08 17:18:11 · 224 阅读 · 0 评论 -
Delphi闪动窗口标题栏
闪动标题栏,hwnd控制的窗口句柄,bInvert为True闪动,为False恢复正常function FlashWindow(const hwnd:Integer;const bInvert:LongBool):LongBool;原创 2020-07-08 17:16:55 · 238 阅读 · 0 评论 -
Delphi颜色值和字符串互转
在Graphics单元中有两个有用的函数://将字符串转换成TColor值,如将'clBtnFace'转换成 $02FF8800function StringToColor(const s:string):TColor;//将颜色值转换成字符串值function ColorToString(Color: TColor): string;原创 2020-07-08 17:10:52 · 1584 阅读 · 1 评论 -
Delphi获取屏幕分辨率
GetSystemMetrics(SM_CXSCREEN); //水平分辨率GetSystemMetrics(SM_CYSCREEN); //垂直分辨率原创 2020-07-06 13:00:53 · 1373 阅读 · 0 评论 -
Delphi打开Windows启动菜单
procedure TForm1.Button1Click(Sender: TObject); begin SendMessage(handle,WM_SYSCOMMAND,SC_TASKLIST,0); end;原创 2020-07-06 08:29:57 · 218 阅读 · 0 评论 -
Delphi隐藏和显示Windows的任务栏
//隐藏任务条procedure HideTaskBar;var h1: THandle; wndClass: array[0..50] of Char;begin StrPCopy(@wndClass[0], 'Shell_TrayWnd'); h1:= FindWindow(@wndClass[0], nil); ShowWindow(h1, SW_HIDE);End;//显示任务条procedure ShowTaskBar;var h1:...原创 2020-07-06 08:24:59 · 485 阅读 · 0 评论 -
Delphi format默认小数位
%f 默认保留两位小数,多位小数时,要自带上格式化参数,如%.4f原创 2020-06-28 09:09:17 · 2134 阅读 · 1 评论