delphi 基础语法
文章平均质量分 81
Hmillet
这个作者很懒,什么都没留下…
展开
-
如何在Delphi中实现精确到微秒级的时钟
{A high-precision counter/timer. Retrieves time differences downto microsec. Quick Reference: THPCounter inherits from TComponent. Key-Methods: ...转载 2018-04-22 15:30:07 · 2281 阅读 · 0 评论 -
利用Delphi的File Of Type创建并管理属于你自己的数据库
前言 在程序中,我们需要用一个途径去把一些有规律的信息存储在磁盘上。不能用TXT格式的文件──因为它不是基于“记录”的,而且管理很不方便。 BDE或ADO也就是说Paradox、Access……唉,不列举了──这些我都不想用,尤其不想用BDE。我要用的是ASCII文本文件。Delphi能做到吗?当然能!这就是“File Of”类型文件,或者说files of some type/bi原创 2017-09-19 20:53:03 · 1271 阅读 · 0 评论 -
delphi把Clientdataset的Delta保存到数据库
版权声明:本文为博主原创文章,未经博主允许不得转载。[delphi] view plain copy //ATableName-表名, AKeyField-主键,多个主键用;隔开,如 ;pid;times; from:unit HlsImplBase; [delphi] view plain copy function T转载 2017-09-18 20:40:41 · 3127 阅读 · 0 评论 -
Delphi中ClientDataSet浅析
与一般的数据集组件不同,TClientDataSet使用的技术比较特别,本着高速度、低存储需求的原则TClientDataSet的内部使用了两个数据存储源。第一个是其Data属性,这是当前内存数据的视图,反映了所有的数据改变。如果用户从数据中删除一条记录,则此记录将从Data中消失,相应地,加入一条新记录后,此记录便存在Data属性中了。另一个数据源是Delta属性,故名思义,即增量的意思,这个属转载 2017-09-18 20:39:41 · 1276 阅读 · 0 评论 -
学会使用SafeArray 之 Delphi 篇
在学习的时候曾经百度了一下,想查找关于delphi中SafeArray的用法,没想到资料竟然如此之少,甚至连一篇相对完整的都没有。也许正如田师傅所说,现在高手们都在实行“技术封锁”了? 在CSDN技术中心有一篇关于C++的使用,说的比较详细。鉴于手中有田师傅写的代码,特拿来一部分对照自己学习的,翻译为Delphi版本。留作笔记,日后翻阅。=====================转载 2017-09-18 20:38:31 · 2377 阅读 · 0 评论 -
delphi、c#数据类型比较
delphi 整数类型的表述同一行的,表示的是相同范围的数。shortint ---- int8 -128..127 smallint ---- int16 SHORT -32768..32767integer Longint ----- int32 LONGint64 -----LONGLONG Largeint LONG64Nativ转载 2017-08-18 15:34:39 · 2286 阅读 · 0 评论 -
delphi Format格式化函数
delphi Format格式化函数Format是一个很常用,却又似乎很烦的方法,本人试图对这个方法的帮助进行一些翻译,让它有一个完整的概貌,以供大家查询之用:首先看它的声明:function Format(const Format: string; const Args: array of const): string; overload;事实上Format方法有两个转载 2017-08-18 10:32:45 · 836 阅读 · 0 评论 -
高低字节序转换(htonl、ntohl、htons、ntohs函数)
高低字节序转换(htonl、ntohl、htons、ntohs函数)Part 1: htons函数具体解释 在Linux和Windows网络编程时需要用到htons和htonl函数,用来将主机字节顺序转换为网络字节顺序。 在Intel机器下,执行以下程序int main()...{ printf("%d /n",htons(16));转载 2017-06-27 20:00:15 · 4707 阅读 · 0 评论 -
在Delphi中创建线程,请一定使用BeginThread()代替CreateThread()创建线程!
在Delphi中创建线程,请一定使用BeginThread()代替CreateThread()创建线程! 如果直接使用Win32的API函数CreateThread()创建多个线程,也是可以创建的。但是,你应该明白,在每个线程中动态分配和销毁内存块,是需要同步保护的。Delphi语言中有一个在使用多线程环境下至关重要的全局变量IsMultiThread,系统在进行内存分配的时候,根据IsMu转载 2017-06-13 14:26:59 · 758 阅读 · 0 评论 -
Delphi之virtual,dynamic,abstract
对象的方法能定义成静态(static)、虚拟(virtual)、动态(dynamic)或消息处理(message)。请看下面 的例子: TFoo = class procedure IAmAStatic; procedure IAmAVirtual; virtual; procedure IAmADynamic; dynamic; procedure IAmAMessage转载 2017-06-22 14:10:40 · 1045 阅读 · 0 评论 -
Delphi常用系统函数总结
字符串处理函数Unit System函数原型 function Concat(s1 [, s2,..., sn]: string): string; 说明 与 S := S1 + S2 + S3 ...; 相同. 将字符串相加.函数原型 function Copy(S: string; Index, Count: Integer): string;说明 S : 字符串. Indexd转载 2017-06-22 09:07:42 · 784 阅读 · 0 评论 -
Delphi预编译指令总结
Delphi预编译指令总结Delphi作为一个优秀的开发工具,这不仅是由于它开创了"构件(Component)"时代,影响深远;另一个原因是它拥有非常出色的编译器,Borland(Inprise)公司宣称Delphi具有世界上最快的编译器,如果你使用过Visual C++和Delphi你会明显体会到这一点。Delphi快速高效的编译器主要来自Object Pascal的严谨,使用Delph转载 2017-06-22 09:06:33 · 825 阅读 · 0 评论 -
DebugHook 与 ReportMemoryLeaksOnShutdown
DebugHook 与 ReportMemoryLeaksOnShutdown 都是 System 下的变量.DebugHook: 程序中母体中运行时, 此值是 1; 独立运行时, 它是 0.在程序的任何地方加上一句 ReportMemoryLeaksOnShutdown := True; 这样程序在关闭时可检测是否有内存泄漏.如果这样使用: ReportM转载 2017-06-22 08:40:01 · 1056 阅读 · 0 评论 -
Delphi Dll中多线程无法使用Synchronize同步的解决方法(转)
具体原因可以参考这篇文章“DLL/ActiveForm中的线程同步处理”www.delphibbs.com/keylife/iblog_show.asp。事实上,经试验可以在dll工程文件中加入以下语句 :Application.Initialize;if Application.Handle = 0 thenbegin Application.CreateHandl转载 2017-06-28 20:51:54 · 1500 阅读 · 0 评论 -
[Delphi] 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++Bui转载 2017-05-22 16:59:52 · 2050 阅读 · 0 评论 -
delphi 怎么将一个流转换成字符串?
//from http://kingron.myetang.com/zsfunc0d.htm (*// 标题:充分利用pascal字符串类型 说明:和PChar不同,string可以保存#0字符在其中;示例文件、内存流字符串之间转换 设计:Zswang 日期:2002-01-25 支持:wjhu111@21cn.com //*)转载 2017-09-19 20:54:18 · 1504 阅读 · 0 评论 -
Delphi 自带了 Base64 编解码的单元
Delphi 自带了 Base64 编解码的单元,叫 EncdDecd,这名字很拗口而且不直观,估计这是一直很少人关注和知道的原因。这个单元提供两套四个公开函数:对流的编解码:procedure EncodeStream(Input, Output: TStream); // 编码procedure DecodeStream(Input, Output: TStream); // 解码转载 2017-09-20 09:13:23 · 1495 阅读 · 0 评论 -
使用 Delphi Xe 的 TDictionary
原本一直使用 TList, 将定义的一个个 Record 保存在TList 里面, 为了能把某些对象管理起来, 例如一个类的 n 多实例,可以进行索引、查找、释放等今天刚看到原来已经有了一个叫 TDictionary 对象,用起来挺方便。 挺像我们在DB中定义的 Dictionary 表,Key、Value。 而那个不管Key、Value 都挺发达,允许各种定义的类。 ok,下面官方De转载 2018-01-30 22:04:07 · 3529 阅读 · 0 评论 -
delphi 弹出ado连接配置相关函数
function PromptDataSource(ParentHandle: THandle; InitialString: WideString): WideString;procedure CreateUDLFile(const FileName, ProviderName, DataSourceName: WideString);function DataLinkDir: st转载 2018-01-30 21:57:55 · 682 阅读 · 0 评论 -
delphi 各种时间类型之间的转换函数
各种时间类型之间的转换函数DateTimeToFileDate函数:定义:DateTimeToFileDate(DateTime: TDateTime): Integer;作用: 将一个TDateTime类型的时间转化为Dos环境中的时间,Dos环境下对时间的访问方法和VCL中的TdateTime类型不一样,在进行文件操作时,为了保持时间的一致性,需要使用DateTimeToFileD转载 2017-12-01 20:33:47 · 8393 阅读 · 0 评论 -
分布式系统唯一ID生成方案汇总
分布式系统唯一ID生成方案汇总系统唯一ID是我们在设计一个系统的时候常常会遇见的问题,也常常为这个问题而纠结。生成ID的方法有很多,适应不同的场景、需求以及性能要求。所以有些比较复杂的系统会有多个ID生成的策略。下面就介绍一些常见的ID生成策略。1. 数据库自增长序列或字段最常见的方式。利用数据库,全数据库唯一。优点:1)简单,代码方便,性能可以接受。2)数字ID天转载 2017-11-30 09:27:33 · 753 阅读 · 0 评论 -
Delphi XE中String、ANSIString、TBytes之间的转换 一、string转为ansistring 1、直接赋值 (有警告) 2、ansistring()类型强制转换。(无警
Delphi XE中String、ANSIString、TBytes之间的转换一、string转为ansistring1、直接赋值 (有警告)2、ansistring()类型强制转换。(无警告)二、ansistring 转为string1、直接赋值 (有警告)2、string()类型强制转换。(无警告)三、string 转为Tbytes1、bytes:= byt转载 2017-11-30 09:25:31 · 1842 阅读 · 0 评论 -
delphi中GetEnumName和GetEnumValue
利用TypInfo单元的GetEnumName和GetEnumValue可以遍历任意枚举类型,并获取其名称和值。下面是示例Demo。 procedure TForm1.btnTestClick(Sender: TObject);var p: PTypeData; i: Integer; s: String; pt: PTypeInfo;begin List转载 2017-10-25 09:03:25 · 675 阅读 · 0 评论 -
TMemoryStream、String与OleVariant互转
TMemoryStream、String与OleVariant互转//////////////////////////////////////////////////////////////////////////////////功能: STRING 的内容流化到 OLEVARIANT 中//参数:////////////////////////////////////////转载 2017-09-29 19:50:04 · 510 阅读 · 0 评论 -
JSON 之 SuperObject(14): 从 XML 中解析
JSON 之 SuperObject(14): 从 XML 中解析SuperObject 文件包中还有一个 SuperXmlParser 单元, 可以从 XML 中解析出 ISuperObject.SuperXmlParser 只有三个函数: XMLParseString、XMLParseStream、XMLParseFile, 分别从字符串、流、文件中解析.遗憾的是对转载 2017-09-29 09:01:32 · 1029 阅读 · 0 评论 -
使用 BinToHex() 把 TBytes 转换为十六进制字符串
{函数}function BytestoHexString(ABytes: TBytes; len: Integer): AnsiString;begin SetLength(Result, len*2); BinToHex(@ABytes[0], PAnsiChar(Result), len);end;{测试}procedure TForm1.FormCreate(Sende转载 2017-09-20 19:29:15 · 1884 阅读 · 0 评论 -
Delphi下16进制位图数据转位图
如果我们在Form中拖入一个Image控件,并设置好picture后,Alt+F12就可以看到Form的源代码中已经将图片转成了16进制字符串,如下:object Image1: TImage Left = 536 Top = 24 Width = 105 Height = 105 Picture.Data = { 075442697转载 2017-09-20 19:02:22 · 1442 阅读 · 0 评论 -
OleVariant 与 Variant
olevariant存在于windows和linux平台,这二种类型主要的不同是variant类型仅是当前的应用程序可以进行操作,而olevariant类型则是ole自动化服务器所以定义的统一的数据类型,意味着可以通过网络或其他程序进行操作,当然也不必担心其他客户端如何进行操作.当你给一个variant类型的变量赋自定义的值的时候(例如delphi string,或一个其他的新的自定义类型转载 2017-09-20 13:55:48 · 2539 阅读 · 0 评论 -
delphi 流Stream 和 Variant 的转换函数
作者: 陆岛工作室Variant 转换成 Stream 的函数procedure VariantToStream (const v :olevariant; Stream : TMemoryStream); var p : pointer; begin Stream.Position := 0; Stream.Size := VarArrayHighBo转载 2017-09-20 13:53:48 · 1308 阅读 · 0 评论 -
delphi formatdatetime 毫秒
e/ee/eee/eeee 以相应的位数显示年FormatdateTime('ee',now); 输出为:04 (表示04年)m/mm/mmm/mmmm 表示月FormatdateTime('m',now);输出为:8FormatdateTime('mm',now);输出为 08FormatdateTime('mmm',now);输出为 八月Fo转载 2017-09-20 10:51:42 · 6903 阅读 · 0 评论 -
TMemoryStream、String与OleVariant互转
TMemoryStream、String与OleVariant互转//////////////////////////////////////////////////////////////////////////////////功能: STRING 的内容流化到 OLEVARIANT 中//参数:////////////////////////////////////////转载 2017-09-20 09:15:03 · 740 阅读 · 0 评论 -
[Delphi] 设置线程区域语言防止乱码
uses Windows;在工程文件中添加一句代码,如下: Application.Initialize; //添加以下一句解决外文系统乱码问题 SetThreadLocale(DWORD(Word(SORT_DEFAULT) shl 16) or DWORD(Word(SUBLANG_CHINESE_SIMPLIFIED) shl转载 2017-05-22 16:58:41 · 850 阅读 · 0 评论 -
delphi数据类型转换
//Char 类型与其编码值的转换:varb: Byte;c: Char;beginb := Ord('A'); {返回: 65}b := Ord(#65); {返回: 65}b := Ord($41); {返回: 65}b := Ord(#$41); {返回: 65}b := Byte('A'); {返回: 65}b转载 2017-05-07 11:05:56 · 6665 阅读 · 0 评论 -
Delphi使用COM对象的时候是否需要CoInitialize
核心提示:MSDN上CoInitialize的解释:Initializes the COM library on the current apartment and identifies the concurr...MSDN上CoInitialize的解释:Initializes the COM library on the current apartment and identifies转载 2017-05-23 20:03:13 · 1428 阅读 · 0 评论 -
Delphi中double类型真正实现四舍五入(保留两位)
delphi 中的round采用的是“四舍、六入、五凑偶”,要改成四舍五入,可用下面方法:function RoundFloat(f:double;i:integer):double;var s:string; ef:extended;begin s:='#.'+ StringOfChar('0',i); ef:=StrToFloat(FloatTo原创 2016-04-08 09:59:56 · 3074 阅读 · 0 评论 -
UDP协议的两个主要方法sendto和recvfrom详解
UDP协议的两个主要方法sendto和recvfrom详解(2010-04-27 10:50:38)转载▼标签:socketudp分类:socketsendto()简述: 向一指定目的地发送数据。 #include int PASCAL FARsendto( SOCKET s,转载 2016-03-25 16:31:36 · 7936 阅读 · 0 评论 -
move函数的用法
delphi中move函数的正确理解 收藏 我们能看到以下代码var pSource,pDest:PChar; len: integer;.......................//一些代码Move(pSource,pDest,len); //错误Move(pSource^,pDest^,len); //正确看起来确实好像是传值,而不是传地址,但是各位别忘转载 2016-03-23 17:10:48 · 1431 阅读 · 0 评论 -
Delphi New,Getmem,ReallocMem联系与区别
procedure New(var P: Pointer); {为一个指针变量分配内存,会自动计算指针所指数据结构需要空的空间大小}procedure GetMem(var P: Pointer; Size: Integer); {分配一个指定大小的内存块(连续),并用P指向它}procedure ReallocMem(var P: Pointer; Size: Integer);{转载 2016-03-23 16:11:31 · 545 阅读 · 0 评论 -
类成员函数转 Windows 回调函数通用代码单元 - ClassCallback.pas
{ unit ClassCallback; }{ }{ A generic solution of make class m转载 2016-03-31 15:45:57 · 471 阅读 · 0 评论 -
Delphi基础:回调函数及其使用
博客园新随笔联系订阅管理最新随笔最新评论Delphi基础:回调函数及其使用Posted on 2010-05-23 16:07 清风轩 阅读(6243) 评论(0)编辑 收藏1 回调函数的概述 回调函数是这样一种机制:调用者在初始化一个对象(这里的对象是泛指,包括OOP中的对象、全局函数等)时,将一些参数传转载 2016-03-30 23:57:12 · 877 阅读 · 0 评论