自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

正己的专栏

记录工作、学习和生活

  • 博客(129)
  • 资源 (1)
  • 收藏
  • 关注

原创 Delphi操作数据库时出错:Too long identifer(>255)

问了一下DeepSeek,DeepSeek分析的很有道理,但并没有解决我的问题,不过给了我一些启发,DeepSeek分析出一条:可能是sql语句中包含了参数,并且参数的名称长度超过了255个字符。后来经过测试发现,如果字符串数据中包含叹号(!),并且叹号后面的字符串长度超过了255(这个255个字符中不能出现叹号,否则不会出这个错误),说明是将叹号后面的内容作为了标识符。经过查询Delphi的帮助,发现叹号是FireDAC中的宏,并且给出了解决方法,将下面的属性设置为False,禁用到宏的解析即可。

2025-02-24 17:42:22 124

原创 Git Gui 窗口无法显示

在鼠标右键菜单中选择 “Git Gui Here”,打开 Git Gui窗口,只是在任务栏显示了 Git Gui 正在运行,在桌面上看不到窗口,也无法操作,可以通过Alt+F4关闭窗口。

2024-11-26 11:04:19 484

原创 电子钱包并发同步最简单的实现

最简单的方法实现钱包充值、消费同步

2024-11-20 08:33:54 300

原创 delphi 编写的工程,运行出现错误:Runtime error 216 at 00407FDE

使用Delphi 10.3.3编译的工程,使用了Delphi自带的多语言版本,使用默认语言可以正常运行,切换到非默认语言,运行出现错误 Runtime error 216 at 00407FDE,程序无法进入主界面。因为之前程序是能正常运行的,后来升级了Ehlib为新版本 10,怀疑是新版本的问题,后来重新安装了Ehlib旧版本9.2,问题解决。调试跟踪发现,是EhLib组件中的资源中包含ImageList组件,这些资源无法正常加载。网上多方查找,没有找到解决方法。

2024-11-15 18:26:17 274

原创 delphi 编译多语言工程 error RC2104 : undefined keyword or key name:

提示出错的行是上面第二行 System_JSONConsts_SInvalidJsonToken, L"Invalid JsonToken: %s"在rc文件中,字符串中包含双引号要使用两个双引号(“”),不能使用(“),修改了就好了,如下。实际上出错的行是第一行最后的部分 are ’ and “”出现错误的的文件是.rc文件,出现错误的位置是。

2024-11-05 22:06:09 437

原创 delphi 10.3 批量设置Library path 搜索路径

Delphi 批量设置库文件搜索路径

2024-10-26 09:55:42 355

原创 Delphi出错 Unit SHDocVw was compiled with a different version

原因:项目中存在 Ieconst.pas, 跟Delphi 自带的 Ieconst.pas 文件不一致。解决方法:将项目中自带的 Ieconst.pas 改名。Delphi 编译出错。

2024-10-25 12:11:47 151

原创 升级到Delphi 12,DUnitx 测试用例项目闪退

也就是只有 TDUnitX.Options.ExitBehavior = TDUnitXExitBehavior.Pause 才会出现,查看源代码发现,在Delphi 12中,TDUnitX.Options.ExitBehavior 默认值是 TDUnitXExitBehavior.Continue 在delphi 10.3中的默认值是 TDUnitXExitBehavior.Pause,可能是Delphi 12中是为了批量测试用例,不允许中间停止,将默认值改成继续了。测试用例的项目代码如下。

2024-10-25 09:00:17 273

原创 delphi 12 编译出错 [dcc32 Error] E1026 File not found: ‘Controls.res‘

按道理说,Controls.res Buttons.res 应该在对应的Debug目录下,我查了Delphi 10.3版本,在Debug目录下也没有这些res文件,只有在release目录下。谷歌搜索,从Youtube上找到一个视频,视频是英语的,有非常重的方言,明听懂(标准的英语我也听不懂:) ),按视频的操作能解决问题。方法是,从自己的资源管理器中找到 Controls.res 然后,添加到 Library Path中。没有找到问题的真正原因,有知道的请给我留言。

2024-10-25 08:53:06 323

原创 Nginx反向代理出现错误 502 bad gateway 案例解析

Flask框架写的程序,使用uwsgi启动,Nginx作为反向代理调用Flask应用。Flask应用有些操作时间比较长,会超过1分钟,在网页端访问会出现错误: 502 bad gateway。Nginx的错误日志中会出现错误:upstream prematurely closed connection while reading response header from upstream。

2023-08-10 09:32:09 2089

原创 Nginx http强制跳转到https,如果排除指定目录

Nigix 强制https时如何排除某些目录

2022-09-26 14:20:51 2142

原创 Delphi 让接口类不自动释放实例

从 Delphi 接口 interface中继承的类,创建后不需要释放,系统会自动释放这些实例。释放时机:不再使用这些实例时会被释放。比如创建了一个实例A,将这个实例传递给B,如果B释放时,会检查A是否还在被其他的实例使用,如果不再使用,将会自动释放B。有些情况不需要自动释放,比如全局变量。需要重载两个函数,来防止系统自动释放实例type// 定义接口IMyInterface = interfaceend;// 接口实现TMyInterface = class(TInterfacedObj

2021-08-26 10:35:16 593

原创 Notepad++ 插件管理器找不到插件

经常使用Notepad++,有很多有用的插件,我是搞开发的,会用到16进制查看插件,插件的名字是Hex-Editor,使用Notepad++自带的插件管理器就可以安装,网上的很多帖子介绍如何安装Hex-Editor插件。我遇到的问题是,在Notepad++的插件管理器中,找不到 Hex-Editor 插件,我以前用过这个插件,我以为是我升级了Notepad++后,插件没有更新不兼容了,后来发现,好几个插件都在插件管理器中找不到,这不科学,Notepad++的用户很多,Notepad++怎么会做出不兼容的升

2020-05-09 08:24:54 1827

原创 Delphi警告 [dcc32 Hint] H2161 Warning: Duplicate resource

在使用Delphi编译是出现如下的警告[dcc32 Hint] H2161 Warning: Duplicate resource: Type 10 (RCDATA), ID PLATFORMTARGETS; File ****.res resource kept; file ****.res resource discarded.这个警告不影响编译运行,作为有编辑洁癖的我,增觉得这种警告...

2020-05-08 14:51:53 1929

原创 Delphi 简单的文本文件操作

Delphi操作文件的方法有好多种,包含ini文件,二进制文件,文本文件。这里介绍代码最少的文本文件的操作。读文本文件var strArr: TStringDynArray; //需要引用 System.Typesbegin strArr := TFile.ReadAllLines('test.txt'); //读取全部内容,需要引用 System.IOUtils //st...

2020-04-28 22:02:05 777

原创 Delphi判断是否为周末?今天是周几?

Delphi中的DayOfTheWeek返回今天是周几,返回值是整数,从1到7,分别表示周一,到周日,周六是6,周日是7。判断今天是否是周末uses System.DateUtils; //需要引用的单元 if DayOfTheWeek(Date) in [6, 7] then // ShowMessage('周末了,好好休息!');...

2020-04-27 11:48:30 1355

原创 DBGridEh多国语言支持

EhLib多国语言支持,在9.0版本之前,使用的跟Delphi官方推荐的一样,使用Resourcestring 和 dfm实现多国语言。EhLib9.0之后,EhLib采用了自己的多国语言处理,下面介绍一种使用外部文件的方法准备资源文件在执行目录下创建目录Res.Res目录下保存Ehlib使用的语言文件,可以从 C:\Program Files (x86)\Embarcadero\Stu...

2020-04-25 15:29:40 1120 1

原创 DBGridEh排序和过滤

DBGridEh可以点击列标题进行排序(标题上有小箭头指示),并可以在列标题下方增加一列显示搜索框。启动点击列标题排序DBGridEH.OptionsEh 中选中 dghAutoSortMarking(实现单列排序),dghMultiSortMarking(实现多列排序)DBGridEh.Coolumns[0].Title.TitleButton = True,进行每个需要排序的列,如果所...

2020-04-24 21:44:03 1773

原创 Delphi 代码格式化快捷键无法使用

Delphi 最新版自带代码格式化功能,快捷键是Ctrl + D,但是安装Cnpack之后,Ctrl+D快捷键会被CnPack的“函数过程列表专家”功能占用,无法使用dlephi自带的代码格式化快捷键。CnPack也有代码格式化功能,快捷键是Ctrl + W,感觉还是Delphi自带的好用好用一些,Delphi自带的代码格式化功能能正确处理{$ifdef }{$endfi},CnPack的代码...

2020-04-23 08:11:25 1385

原创 Delphi 10.3.1安装cnpack后,出现错误CnWizards_D103R.dll

Delphi 10.3.1安装cnpack的CnWizards_1.1.9.991版本后,启动delphi出现下面的错误提示框bds.exe - 无法找到入口无法定位程序输入点 @System@Classes@TFieldsCache@$bcctr$qqrv 于动态链接库 C:\Program Files (x86)\CnPack\CnWizards\CnWizards_D103R.dll...

2020-04-22 17:19:11 1638

原创 delphi 10.3 编译出现错误[Fatal Error] Access violation at address 20749862 in module 'coreide260.bpl'

使用delphi 10.3.1编译工程出现错误下面错误[Fatal Error] Access violation at address 20749862 in module 'coreide260.bpl'. Read of address 00000000从网上查询了该错误的处理方法,有的说是第三方应用导致的,因为一直在搞cnpack的配置,觉得可能是cnpack导致的,卸载cnpa...

2020-04-22 17:10:43 2248 1

原创 如何判断网页邮箱出通过邮件客户端工具发送过来的(smtp发送),还是通过网页邮箱发过来的(HTTP发送)

可以根据文件头判断网易邮箱发送使用的工具。通过网页邮箱发送的邮件,邮件头包含下面的信息,注意其中的 ajax-webmail-wmsvr42 标识的是网页邮箱工具。Received: from ymail$126.com ( [104.215.168.136] ) by ajax-webmail-wmsvr42 (Coremail) ; Wed, 9 Jan 2019 20:46:19 ...

2019-01-10 09:16:25 3108 1

原创 delphi工具栏按钮显示不完整,高度不能调整的原因

使用delphi工具按组件发现了一个问题,将工具栏TToolBar中一个TToolButton按钮的Style属性由tbsButton改成tbsDropDown后,发现工具栏上的图片最下方一条没有显示出来,也就是图片的最下方少一条。从改变这个属性来开,将Style属性从tbsButton改成tbsDropDown后,工具栏需要更高的空间,但是修改TToolBar.ButtonHeight属性无

2017-05-18 14:53:25 2545

原创 Delphi中的SHA256算法

在Delphi xe中可以直接使用 TIdHashSHA256 来实现SHA256算法,代码如下uses IdHashSHA, IdSSLOpenSSLHeaders;var SHA256 : TIdHashSHA256;SHA256 := TIdHashSHA256.Create;Password_p := LowerCase(SHA256.HashStringAsHex(Pas

2017-04-24 09:06:57 9793 4

原创 TWebBrowser出现 Method pasteHTML not supported by automation object 解决方法

先看下面的源码,在TWebBrowser当前编辑位置插入一个图片,是通过源码的方法插入的。var urlStr : string; ovSelection: OleVariant; ovTextRange: OleVariant; tmpStr : string;begin urlStr := 'http://www.1and1-mail.com/imgv2/

2017-04-11 09:37:55 1885

原创 delphi 中 使用 TIdHTTP 提交Post数据

varfhttpRequest: TIdHTTP;PostData : TStringStream;tmpStr : String;begin fhttpRequest := TIdHTTP.Create(nil); with fhttpRequest do begin ProtocolVersion := pv1_1; AllowCookies := Tru

2017-04-07 09:52:22 20686

原创 IHTMLElement.getAttribute 出现参数无效的解决方法

调用 IHTMLElement.getAttribute('href') 时,如果被调用的链接是错误的链接,比如 abc,也就是说href后面是个错误的url时,会出现“无效参数”错误对对话框。改进方法 IHTMLElement.getAttribute('href', 2),也就是增加一个参数,参数说明如下0: Default. Performs a property search th

2017-03-31 17:48:24 3629

原创 Delphi 从 TWebBrowser中获得当前输入处的链接

var unsubscribeStr : string; ovSelection: OleVariant; innerDom, ovTextRange, nnode: OleVariant;begin ovSelection := Edit.doc.selection; //获得选择对象 ovTextRange := ovSelection.creat

2017-03-31 15:25:02 815

原创 Win 10下 Twebbrowser无法通过pasteHTML插入Mailto 链接

var unsubscribeStr : string; ovSelection: OleVariant; innerDom, ovTextRange, nnode: OleVariant;ovSelection := Edit.OleObject.Document.selection; //获得选择对象ovSelection.Clear;ovTextRange := ov

2017-03-31 14:25:43 1869

原创 Delphi 获得Windows操作系统主版本号

function GetOSMajorVersion: integer;//获取操作系统主版本号var osVerInfo: TOSVersionInfo;begin Result := 5; //默认是xp的主版本号 osVerInfo.dwOSVersionInfoSize := SizeOf(TOSVersionInfo); if GetVersionEx(osVerInf

2017-03-30 09:43:40 3440

原创 Delphi 取得IE版本的方法

方法1:读取注册表function GetIEVersion : string; //获得IE的版本号var reg : TRegistry;begin reg := TRegistry.Create; reg.RootKey := HKEY_LOCAL_MACHINE; result := ''; try if reg.OpenKey('\SOFTWARE\Mi

2017-03-29 09:11:15 2048

原创 Delphi读取文本文件出现 No mapping for the Unicode character exists in the target multi-byte code page

TStringList.LoadFromFile时会出现 No mapping for the Unicode character exists in the target multi-byte code page提示如下代码var tmpStrs : TStrings;begin tmpStrs := TStringList.Create; tmpStrs.LoadFromFi

2017-03-24 16:16:32 3362

原创 Delphi 下的Base64编码和解码

function Base64Encode(s : string) : string; //base64 编码var base64 : TIdEncoderMIME; tmpBytes : TBytes;begin base64 := TIdEncoderMIME.Create(nil); try base64.FillChar := '='; tmpByte

2017-03-23 10:17:14 14327

原创 delphi 禁用掉窗口中的所有组件

procedure DisableAllControls(m_form: TWinControl; m_enable : Boolean = false);var i : integer;begin //禁用窗口中所有组件 //m_enabled = true 表示启用 for i := 0 to m_form.ComponentCount - 1 do begin i

2017-03-22 15:25:34 1112

原创 delphi 判断目录是否有写入权限

没有找到判断目录是否有写入权限,自己写了一个,我觉得应该是有相应的函数的,但是没有找到。function DirWritable(m_dir : string) : boolean; //目录是否有写入权限var tmpStrs: TStrings; //测试数据目录是否写权限 tmpName : string;begin //参数为目录,包含最后的斜杠 //如果可写,

2017-03-21 09:16:54 1642

原创 为TMenuItem增加指针Data属性

Delphi的有些组件中都包含.Data属性,比如TTreeNode,.Data属性可以认为是一个指针,可以指向任何类或者结构,方便后续操作。但是TMenuItem没有.Data属性,下面介绍最简单的方法为TMenuItem增加.Data属性。在需要使用的.pas文件前面写上如下代码type  //建议在最开始的type后面增加  TMenuItem = class(vcl.Men

2017-03-09 09:36:03 648

原创 Delphi 中哈希表TStringHash和THashedStringList性能速度

Delphi的IniFiles单元中有两个哈希表类TStringHash和THashedStringList【TStringHash】优点:速度快,尤其是添加时(调用.Add)速度比THashedStringList快得多。缺点:1、Key只能是字符串,Value只能是数字2、无法进行遍历【THashedStringList】优点:继承与TStringL

2017-02-17 17:08:54 5065

原创 Delphi出现 No mapping for the Unicode character exists in the target multi-byte code page 处理方法

当调用 TStrings.LoadFromFile(html_file_name, TEncoding.UTF8); 出现 No mapping for the Unicode character exists in the target multi-byte code page错误。这种错误在调用非UTF8编码的文件时会出错。处理方法如下    tmpStrs.LoadFromFil

2017-01-18 10:43:57 8071

原创 NSIS实现自定义选择数据保存目录窗口

NSIS实现如下界面,选择数据保存目录,这个窗口将会在选择安装目录窗口后出现代码如下Var DataDir ;定义数据目录位置!insertmacro MUI_PAGE_WELCOME ;欢迎页面!insertmacro MUI_PAGE_DIRECTORY ;调用NSIS选择目录窗口Page custom SetCustom LeaveCustom ;自

2017-01-13 17:38:04 4047

原创 使用Indy组件出现 Already connected. 异常的处理方法

在使用Indy的邮件组件(TIdSMTP相关)的时候,有时候会出现 Already connected. 但是调用了Disconnect函数以后,下次再次调用Connect的时候还是会出现 Already connected. 解决方法      if TIdSMTP.IOHandler         TIdSMTP.IOHandler.InputBuffer.Clear;  //如

2017-01-05 17:52:35 3716

indy9 ssl使用的两个动态库 libeay32.dll,ssleay32.dll

delphi indy9使用ssl时要用openssl动态库,libeay32.dll,ssleay32.dll,但需要特殊编译的版本

2008-10-22

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除