随笔分类 - Z技术(Delphi)
摘要:TClientDataSet的基本属性和方法 TClientDataSet控件继承自TDataSet,其数据存储文件格式扩展名为 .cds/.xml,是基于文件型数据存储和操作的控件。 该控件封装了对数据进行操作处理的接口和功能,而本身并不依赖其它数据库驱动程序,基本上能满足单机"瘦"数据库应用程序的需要。FieldDefs: 字段定义列表属性 可通过单击属性编辑器中的属性编辑按钮,或在该控件上单击右键选择弹出菜单中的"Fields Editor"菜单进行字段编辑。设置完此属性后,实际上就相当于定义了表的结构; 如果想装入已有的数据表的结构和数据,可通过
阅读全文
摘要:通信协议 串行通信接口(如RS232、RS485等)作为计算机与单片机交互数据的主要接口,广泛用于各类仪器仪表、工业监测及自动控制领域中。 通信协议是需要通信的双方所达成的一种约定,它对包括数据格式、同步方式、传送速度、传送步骤、检纠错方式以及控制字符定义等问题作出统一规定,在双方的通信中必须共同遵守。在实际应用系统中,如果缺少一个严格、合理、规范的串口通信协议,将无法保证数据传输的正确性及通信的可靠性。 因此,需要提出一种基于状态机串口通信协议的设计方法:通过合理地设置数据包格式来保证了数据传输的正确性:引入了状态机方法,简化了协议的实现难度,提高了通信的可靠性,同时使通信过程具有较高...
阅读全文
摘要:Spcomm属性设置 SPCOMM 控件的属性设置很关键的,特别是使用事件驱动时接收大数据块时尤为明显,如果设置不当,接收到的数据可能严重出错。 ReadIntervalTimeout:=100 SPCOMM 属性中,所有 可设置 True 和 False 的属性应当设置成 False; SPCOMM 控件每次只能接收 2048 个字节,如果大于 2048 个字节,则分多次接收.Spcomm串口通信的关键技术问题 Spcomm应用的核心在于主线程、读线程和写线程之间的消息传递机制,而通信数据相关信息的传递也是以消息传递的方式进行的。 在使用Spcomm进行串口通信编程,除按照说明使...
阅读全文
摘要:absolute{它使得你能够创建一个新变量, 并且该变量的起始地址与另一个变量相同.}var Str: string[32]; StrLen: Byte absolute Str;{这个声明指定了变量StrLen起始地址与Str相同.}{由于字符串的第0个位置保存了字符串的长度, 所以StrLen的值即字符串长度.}begin Str := 'abc'; Edit1.Text := IntToStr(StrLen);end;View Code abstract{它允许你创建抽象的方法, 包括有抽象方法的类称为抽象类.}{Abstract关键字必须与Virtual或Dynami
阅读全文
摘要:另外两种多线程的同步方法 CriticalSection(临界区) 和 Mutex(互斥), 这两种同步方法差不多, 只是作用域不同;CriticalSection(临界区) 类似于只有一个蹲位的公共厕所, 只能一个个地进;Mutex(互斥) 对象类似于接力赛中的接力棒, 某一时刻只能一个人持有, 谁拿着谁跑.什么是 Semaphore(信号或叫信号量) 譬如到银行办业务、或者到车站买票, 原来只有一个服务员, 不管有多少人排队等候, 业务只能一个个地来. 假如增加了业务窗口, 可以同时受理几个业务呢? 这就类似与 Semaphore 对象, Semaphore 可以同时处理等待函数(...
阅读全文
摘要:TStringList 常用方法与属性var List: TStringList; i: Integer;begin List := TStringList.Create; List.Add('Strings1'); {添加} List.Add('Strings2'); List.Exchange(0,1); {置换} List.Insert(0,'Strings3'); {插入} i := List.IndexOf('Strings1'); {第一次出现的位置} List.Sort; ...
阅读全文
摘要:string string = AnsiString = 长字符串,理论上长度不受限制,但其实受限于最大寻址范围2的32次方=4G字节; 变量Str名字是一个指针,指向位于堆内存的字符序列,字符序列起始于@Str[1],@Str[1]偏移负16个字节的空间存储着字串长度、引用计数等信息。字符序列以NULL结束。string[n] string[n] = ShortString = 短字符串,最多容纳255个字符,实际长度是字符长度+1,是Delphi的简单类型; Str[0]存储着字符的个数,第一个字符从Str[1]开始存放,不以NULL结束。 只要理解这一理论,转string应该就...
阅读全文
摘要:在 Delphi 中使用多线程有两种方法: 调用 API、使用 TThread 类; 使用 API 的代码更简单.CreateThreadfunction CreateThread( lpThreadAttributes: Pointer; {安全设置} dwStackSize: DWORD; {堆栈大小} lpStartAddress: TFNThreadStartRoutine; {入口函数} lpParameter: Pointer; {函数参数} dwCreation...
阅读全文
摘要:SQLite SQLite是一个老牌的轻量级别的本地文件数据库,完全免费且开源,不需要安装,无须任何配置,当然,这样管理功能就不是很强大了,但是它的主要应用也是在本地数据库,可以说是最简单好用的嵌入式本地数据库了。 SQLite只要一个DLL就可以实现全部功能。SQLite不需要数据库引擎,只有一个数据文件,占用系统资源非常少,很适合做Demo或小型应用。 同时,SQLite也是关系型数据库,支持大部分SQL语句。它支持事务机制和blob数据类型,支持大部分SQL92标准,最大支持数据库到2T。 它还有Python、Tcl、PHP、Java的绑定,这些语言可以直接使用SQLite数据库...
阅读全文
摘要:概述^: 指针@: 取址#: 十进制符$: 十六进制符@ :取址运算符1 var2 int :integer;3 p :^integer;4 begin5 new(P);6 int :=24;7 p :=@int;8 dispose(P);9 end;^ :指针的引用解析操作符var pint :^integer;begin new(pint); showmessage(inttohex(integer(@pint),8)); pint^ :=$ff; showmessage(inttohex(pint^,4));end; 符号 ^ 有两种用途 当它出现在...
阅读全文