
Delphi
文章平均质量分 53
OK_boom
大龄搬砖工,酷爱计算机技术,java/C#/android/free pascal/C++。
展开
-
Delphi 内存分配
Delphi内存分配原创 2023-04-29 08:49:25 · 1314 阅读 · 0 评论 -
Delphi显示Opencv的Mat/IplImage图像
先下载delphi opencv套件: https://github.com/Laex/Delphi-OpenCV 打开opencv_classes工程, 增加如下 两个函数导出,用于mat->IplImage, IplImage->mat的转换, 因为delphi opencv这个套件里面的ocvView显示用的是IplImage。ICLASS_API IplImage __st原创 2017-06-17 11:25:09 · 5256 阅读 · 0 评论 -
从Delphi返回动态数组到C#和C++
经过很多尝试, Delphi/pascal无法将array of integer这样的数组返回给C#,只能传数组的地址过去, C#以IntPtr类型的参数接收, 然后通过Marshal将指针所指的内容复制出来 delphi的dll声明:function dumpRegisters(out pvOut: PInteger; out pvSize: word): boolean; st原创 2017-05-20 15:55:49 · 1489 阅读 · 0 评论 -
delphi的基本数据类型
分类范围字节备注简单类型序数整数Integer-2147483648 .. 21474836474有符号32位Cardinal0 .. 42949672954无符号32位Shortint-128 .. 1271有符号8位Smallint-32768 .. 327672有符号16位转载 2017-06-07 11:02:25 · 1932 阅读 · 0 评论 -
慎用DelphiXE的TTask.WaitForAll/WaitForAny 一不小心会造成内存泄露!
很多时候我们会用ttask.waitforall等待一组任务的结果,然后在主线程UI里面报告运行结果, 因为waitforall方法是阻塞式的等待,如果直接在主线程里执行,会卡死UI, 所以就尝试开另一个task用来等待这组任务的结束,如下代码:lvT:=TTask.Create(procedure() var i:integer; begin TTask.WaitForAll(l原创 2017-06-09 10:12:15 · 3638 阅读 · 3 评论 -
Delphi 高效的通用对象池
对象池的设计,可以让一定频繁使用到的对象可以重用, 无需不断进行create/destroy,极大加快了运行效率. 下面是一个非常简单的利用队列设计而成线程安全的通用对象池.unit uObjPoolUnit;interface{ 通用的对象池 create by rocklee, 9/Jun/2017 QQ:1927368378 应用例子: FPool :=原创 2017-06-09 15:29:05 · 2679 阅读 · 0 评论 -
Delphi的新工具单元IOUtils
集成了一些文件IO操作原创 2017-06-23 15:57:45 · 1574 阅读 · 0 评论 -
Delphi XE中动态表达式的应用 (调用自定义函数)
最近发现除了用动态脚本语言来实现动态表达式的运算(比如fs),还可以在高版本的delphi里面实现 . 如下代码, 先定义一个GetArea函数的实现(获得面积的函数), 然后注册它, 再利用ICompiledBinding来动态调用.program Project1;{$APPTYPE CONSOLE}uses System.Rtti, System.Bindin原创 2017-07-13 16:18:20 · 1745 阅读 · 0 评论 -
Delphi调用VC的类并引用(参数,执行类方法等)
一直以为Delphi与VC之间不能进行传递对象类型参数, 所以一直以结构或更普通的数据类型交换数据 , 但前段时间得一大神传授, 终于知道如何实现类对象的传递. 需要注意的是C++里面的struct才能与delphi里面的class一一对应, 而且,struct里面的元素地址不能随意改变(比如setlength),不然就AV了. 具体代码在: http://git.osch原创 2017-06-24 22:57:19 · 1481 阅读 · 0 评论 -
Delphi 与 C/C++ 数据类型对照表
更新,下面这table为最新的tokyo基本数据类型与C++的对照关系:Delphi to C++ types mappingGo Up to Support for Delphi Data Types and Language ConceptsBelow is a list of Delphi data types and the correspond转载 2015-09-24 11:53:48 · 7053 阅读 · 0 评论 -
Delphi TExWebBrowser可禁止加载图片...
由于TEmbedWb对最新版本的Ex支持不好,总会内存报错, 所以改为使用TExWebBrowser, 也就是原装的TWebBrowser加上Mime Filter封装一下, 感谢原作者的共享精神,但不知为何设置showImages=false后,不断刷新,内存会暴增,而且内存泄露报告又报不出来.unit ExtWebBrowser;interfaceuses Windows, ...转载 2018-03-10 10:12:10 · 828 阅读 · 0 评论 -
Delphi 读取Json操作备忘
{"a":3.1415926,"rows":[{"f1":"aa","f2":1234},{"f1":"bb","f2":3.122}]}var lvJson, lvJsonItem: TJSONObject; lvRows: TJSONArray; lvfVal: Double; i: integer;begin lvJson := TJSONObject.P...原创 2019-06-24 15:02:09 · 757 阅读 · 0 评论 -
Delphi的参数修饰const/var/output 与C++的对应关系
delphi的const/input和默认的没有修饰, C++都是一样的delphi的var,对应C++那边是指针, 调用方需要管理内存(负责分配内存及销毁) delphi的output , 对应c++那边也是指针 , 如果是 C++调用Delphi DLL, 而Delphi有个形参是out修饰的话, C++调用方传入的指针可以不需要初始化, 因为初始化已经在dll那边完成原创 2017-05-17 09:32:46 · 1158 阅读 · 0 评论 -
Delphi版本号对照(条件编译中用到)
VER300 Delphi Seattle / C++Builder Seattle 23 230 (Delphi:Win32/Win64/OSX/iOS32/iOS64/Android) (C++Builder:Win32/Win64/OSX/iOS32/iOS64/Android) VER290 Delphi XE8 / C++Builder转载 2017-03-25 16:07:49 · 3603 阅读 · 0 评论 -
关于新版Delphi的并发操作及公共变量并发读写
传统的编译型语言对多线程访问同一公共变量都会先锁定,旧版的Delphi亦如是,如果不先锁定,多半会有地址操作错误之类的运行时提示. 但XE的出现让一切都免了,固定内存占用的数据类型(integer,double,long之类)同时读写没事, 即使变长的String类型亦没事!! 除了公共变量, 连对象的属性都一样,下面是测试代码:type TForm1 = class(TForm)原创 2015-09-29 10:21:42 · 3579 阅读 · 0 评论 -
Delphi新语法 For ..In
首先我们要知道哪些类型可以用For In吧,下面就是:for Element in ArrayExpr do Stmt; 数组for Element in StringExpr do Stmt; 字符串for Element in SetExpr do Stmt; 集合for Element in CollectionExpr do Stmt; 集合fo转载 2015-09-21 15:34:04 · 2382 阅读 · 0 评论 -
Delphi相关的几个博客
http://blog.csdn.net/henreash/article/details/7480456http://www.cnblogs.com/hnxxcxg/p/4109990.htmlhttp://blog.csdn.net/henreash/article/details/25313019http://blog.csdn.net/henreas原创 2015-09-22 08:50:19 · 893 阅读 · 0 评论 -
delphi下的接口编程学习笔记
Delphi下的接口编程 Delphi下的接口编程学习笔记 1.1 为什么使用接口? 举个例子好了:有这样一个卖票服务,电影院可以卖票,歌剧院可以卖票,客运站也可以卖票,那么我们是否需要把电影院、、歌剧院和客运站都设计成一个类架构以提供卖票服务?要知道,转载 2015-09-22 21:12:51 · 2787 阅读 · 0 评论 -
Delphi关于TTask的外部中断&等待结束
任务里面是死循环, 点击完成后,从主线程通知任务结束,然后等待所有任务完成后再显示"All Done" 这个流程, 百度/谷歌了一阵没发现这方面的话题,自己用TTask亦试不出来,唯有定义一组外部变量来实现...unit Unit1;interfaceusesWinapi.Windows, Winapi.Messages, System.SysUtils, System.Vari原创 2015-09-24 10:12:57 · 3194 阅读 · 1 评论 -
Delphi实现类的持久化保存(DFM格式)
var inStream,outStream:TMemoryStream;begin inStream:=TMemoryStream.Create; outStream:=TMemoryStream.Create; try inStream.WriteComponent(self); inStream.Position:=0; ObjectB转载 2015-12-13 00:19:29 · 2056 阅读 · 0 评论 -
Delphi语言如何对自定义类进行持久化保存及恢复 (性能远比json/xml高)
Delphi的RTL自身就带有一套很好的资源持久化保存(IDE设计窗体时,保存为DFM格式及编译到EXE里面的资源文件)及恢复机制(EXE启动时对窗体资源的加载),那么应没必要再额外用xml/json格式保存程序的参数了,我们大可以将参数集中在一个参数类里面,然后通过这套机制进行保存及恢复。 由于我们的参数类型可能五花八门,除了传统的整数、小数、字符串、true/false、还有原创 2016-03-18 11:40:35 · 2046 阅读 · 0 评论 -
WinInet下载文件
Uses WinInet(1)HTTP下载Function WWWDownFile(Const FTURL,LocalFile : String) : Boolean; //下载函数.Const FTAcceptTypes = '*/*'; FTAgent = 'Explorer'; FTUserName = ''; //用户名.转载 2016-03-18 15:30:03 · 1287 阅读 · 0 评论 -
Delphi与JAVA互加解密AES算法
Delphi-JAVA互加解密AES算法最近项目中用到了AES加密算法,网络搜罗没有适用Delphi与AES互相加解密完善的代码,所以只好自己动手了。首先介绍下为什么从网上搜罗来的代码要么不能互加解密:1、要统一原文的编码格式,因为不同的编码格式占用内存是不同的,不同的内存数据去加密结果当然不一样了。2、AES是一种标准的算法,他对原文密钥以及CBC模式下的初始向量都是由位数要求的,其中原转载 2016-03-31 09:09:06 · 6367 阅读 · 1 评论 -
字串转16进制、转base64在速度对比。。。
lvRet: string; // lvbytes:TArray;begin // lvbytes:=Gen1MBytes(); //if length(lvbytes)>0 then // SetLength(lvBuffer,1024*1024); try // lvBuffer[1]:='A'; // lvBuffer[1024*1024]:='B';原创 2016-03-31 17:06:57 · 8004 阅读 · 1 评论 -
Delphi XE Debug模式编译的EXE体积太大 ??
以Delphi XE为例,修改Debug 模式的选项: Delphi Compiler -> Linking -> Debug Information 改为false Delphi Compiler -> Compiling -> Debugging -> Debug Information 改为No Debug information, Symbol reference info改为No原创 2016-04-01 15:25:21 · 4763 阅读 · 1 评论 -
简略单纯高效的Delphi原子队列
本文供给Delphi一个基于原子操纵的无锁队列,简略单纯高效。实用于多线程大吞吐量操纵的队列。科学是使人精力变得大胆的最好路子。可用于Android体系和32,64位Windows体系。 感激歼10和qsl供给了批改建议!有如下题目:1.必须实现开辟内存2.队列大小必须是2的幂3.不克不及压入空指针 unit utAtomFI转载 2015-09-29 10:50:45 · 4493 阅读 · 1 评论