
Delphi 小见解
虚月
这个作者很懒,什么都没留下…
展开
-
无法为更新定位行。一些值可能已在最后一次读取后已更改。
<br /> 今天在做delphi时又出现了‘无法为更新定位行。一些值可能已在最后一次读取后已更改’。之前也有出现,但都忘了最后怎么处理。今天很急的情况下又出现了这种状况,让我有点急了。在网上找的一些信息,虽然那些都有道理,正常应该能解决问题。但是却和我的具体情况有些不太一样。我对比了下,根据网上提供的信息对比了下,发现没有问题。还有些更高级的,但是我想对于我这个学的没多久的人来说应该不会想到去改那么高级的属性。<br /> 但是‘无法为更新定位行。一些值可能已在最后一次读取后已更改’有原创 2010-07-06 10:34:00 · 1724 阅读 · 0 评论 -
FireDAC 下的 Sqlite [12] - 备忘录(草草结束这个话题了)
该话题的继续延伸主要就是 SQL 的语法了, 草草收场的原因是现在的脑筋已经进入了 IntraWeb 的世界.相关备忘会随时补充在下面://连接多个数据库的参考代码:FDConnection1.ExecSQL('ATTACH ''c:\hr.sdb'' AS hr');FDConnection1.ExecSQL('ATTACH ''c:\cust.sdb'' AS cu转载 2015-06-16 17:15:54 · 574 阅读 · 0 评论 -
FireDAC 下的 Sqlite [8] - 自定义函数
Sqlite 本身没有这个功能, FireDAC 通过 TFDSQLiteFunction 增加了该功能; 尽管通过某些 SQL 语句或通过视图也可以达到类似效果, 但函数会更灵活些.本例先建了一个成绩表, 然后通过两个 TFDSQLiteFunction 实现了 "总分" 与 "平均分" 的计算.你可以复制下面文本框中的内容, 然后直接往窗体上贴, 以快速完成窗体设计:o转载 2015-06-16 17:11:58 · 956 阅读 · 0 评论 -
FireDAC 下的 Sqlite [4] - 创建数据库
建立数据库的代码:{建立内存数据库的一般代码:}begin FDConnection1.DriverName := 'SQLite'; //同 FDConnection1.Params.Add('DriverID=SQLite');// FDConnection1.Params.Add('Database=:memory:'); //可省略这行, FireDAC 的源码显示, i转载 2015-06-16 17:06:15 · 1555 阅读 · 0 评论 -
FireDAC 下的 Sqlite [11] - 关于批量提交 SQL 命令的测试
可把下面代码直接贴在空白窗体上, 以快速完成窗体设计:object DBGrid1: TDBGrid Left = 0 Top = 0 Width = 265 Height = 338 Align = alLeft DataSource = DataSource1 TabOrder = 0 TitleFont.Charset = DEFAULT_转载 2015-06-16 17:15:22 · 809 阅读 · 0 评论 -
FireDAC 下的 Sqlite [5] - 数据的插入、更新、删除
先在空白窗体上添加: TFDConnection、TFDPhysSQLiteDriverLink、TFDGUIxWaitCursor、TFDQuery、TDataSource、TDBGrid(并在设计时关联好).你也可以复制下面文本框中的内容, 然后直接往窗体上贴, 以快速完成以上的添加过程:object DBGrid1: TDBGrid Left = 16 Top转载 2015-06-16 17:09:05 · 1516 阅读 · 0 评论 -
FireDAC 下的 Sqlite [3] - 获取数据库的基本信息
在空白窗体上添加: TFDConnection, TFDPhysSQLiteDriverLink, TFDGUIxWaitCursor, TMemoprocedure TForm1.FormCreate(Sender: TObject);var List: TStrings; V: Variant;begin FDConnection1.Open('DriverID=S转载 2015-06-16 17:04:48 · 1098 阅读 · 0 评论 -
FireDAC 下的 Sqlite [9] - 关于排序
SQLite 内部是按二进制排序, 可以支持 ANSI; FrieDAC 通过 TFDSQLiteCollation 支持了 Unicode 排序, 并可通过其 OnCompare 事件自定义排序.下面的例子, 测试了这两种排序的不同.可把下面代码直接贴在空白窗体上, 以快速完成窗体设计:object DBGrid1: TDBGrid Left = 0 Top转载 2015-06-16 17:13:17 · 920 阅读 · 0 评论 -
FireDAC 下的 Sqlite [10] - 使用 R-Tree 搜索
R-Tree 主要用于三维空间的搜索, 据说这种搜索算法非常之快, 哪怕百万条记录也是眨眼间的事!SQLite 支持 1-5 维, FireDAC 也提供了 TFDSQLiteRTree 控件以方便定义回调函数. 为了简单, 我用二维表进行了成功的测试.建立 R-Tree 表(索引)时需要使用特定语法, 譬如:FDConnection1.ExecSQL('CREATE VIRT转载 2015-06-16 17:14:16 · 908 阅读 · 0 评论 -
FireDAC 下的 Sqlite [7] - 备份、优化、事务(Transaction)
用 TFDSQLiteBackup 控件, 两三行代码即可完成 Sqlite 数据库的备份.procedure TForm1.Button1Click(Sender: TObject);begin {先初始化目标} FDConnection1.DriverName := 'SQLite'; FDConnection1.Params.Add('Database=C:\Temp\转载 2015-06-16 17:10:22 · 864 阅读 · 0 评论 -
FireDAC 下的 Sqlite [1] - 前言
很长时间没静下心来写博客了, 现在回来, 是 Delphi 不断地进步让我感动、振奋.Delphi XE5 并入了 FireDAC, 第一印象非常好, 恐怕 dbExpress 等等都要靠边站了.让我最高兴地是 FireDAC 对 Sqlite 的支持!优秀的 Sqlite 早就有很多 Delphi 的包装(http://www.sqlite.org/cvstrac/w转载 2015-06-16 17:02:11 · 968 阅读 · 0 评论 -
FireDAC 下的 Sqlite [6] - 加密
主要就是设置 TFDConnection 的两个链接参数: Password, NewPassword, 非常简单.const dbPath = 'C:\Temp\SQLiteTest.sdb';{建立加密数据库, 密码是 mm123}procedure TForm1.FormCreate(Sender: TObject);const strTable = 'CREAT转载 2015-06-16 17:09:38 · 907 阅读 · 0 评论 -
FireDAC 下的 Sqlite [2] - 第一个例子
为了方便测试, 我把官方提供的 C:\Users\Public\Documents\Embarcadero\Studio\14.0\Samples\data\FDDemo.sdb 复制了一份到 C:\Temp\FDDemo.sdb.{新建一个 VCL Forms Application, 然后添加如下控件(建议按 Ctrl + . 后用键盘输入添加):}TFDPhysSQLiteD转载 2015-06-16 17:03:13 · 786 阅读 · 0 评论 -
SPComm的一点小诀窍 spcomm的问题导致数据丢失
最近几天完成了BiasDAC的程序编写。调试的过程还算比较顺利,除了几个有点bt的小问题。其中一个困扰了我两三天的时间,今天上午终于将其解决。由于BiasDAC是用RS232 Serial Port通信的,延用之前的程序,使用了Delphi的SPComm控件。在之前的使用中,SPComm控件一直工作正常,使用的是一般的string进行消息的传递。而BiasDAC由于通信协议的限制,转载 2014-02-12 15:00:34 · 2027 阅读 · 0 评论 -
Delphi 收缩Access数据库
<br /> 我自己在做一个自己用的个人理财系统时,由于想方便程序,所以使用了Acess数据库,使用方便。本是没什么事,做完了之后就突然想到我之前做的一些使用SQL数据库的程序时,偶尔删除大量数据时要收缩下数据库,我就自己没事收缩下Acess数据库,没想到居然小了一半,这还只是我测试时使用的数据,如果长此以往那空间不是浪费太大了。<br /> 之后我就去找了好多的用命令收缩数据库的方法,但是找了好多,大体都是两种,一种是CompactDatabase(原数据库文件,新数据库文件,原密码,原创 2011-01-26 17:33:00 · 1210 阅读 · 0 评论 -
Delphi编码规范
<br />目录<br /> <br /> <br /> <br />1、前言... 2<br />2、源程序书写规范... 2<br />2.1通用源代码格式规范... 2<br />2.1.1缩进... 2<br />2.1.2边距... 2<br />2.1.3 Begin…End语句... 2<br />2.1.4注释... 3<br />2.2 Object Pascal语句格式书写规范与用法... 3<br />2.2.1括号... 3<br />2.2.2保留字和关键字... 3<br />2转载 2010-10-30 11:44:00 · 571 阅读 · 0 评论 -
查找另一个程序,并将其显示在最前端
<br /> 之前在做一个程序只能开一次,再次打开就会提示此软件已运行。但是我发现会再次点这个程序是因为它是处于最小化,或者干脆就是处于托盘状态,才会去再次点。但是点击后知道那个程序已在运行,但是还得再找到那个程序。我就想可不可以提示运行之后就把那个程序显示出来!不过在之中间我还是发现了两个问题。<br /> 1、如果此软件没做什么事还好,用正常的FindWindow(nil,'此软件的项目标题') 就可以找到。但是如果这个软件本身就已有在接收消息,且时刻在处于系统消息,那就会出现找不到原创 2010-09-10 17:00:00 · 948 阅读 · 0 评论 -
关于DBGrideh出现Dataset not in edit or insert mode
前两天一直在对DBGrideh 进行操作,我是做一个checkbox 的选择框,对没勾选的记录点击进行添加数据,对有勾选的记录点击进行是否删除数据。我是在选择框的数据改变是事件onupdatedata的事件中对数进行修改,但有时候可以修改,有时候就会出现adoquery1: dataset not in edit or insert mode 的错误,我百思不得其解。 在网上找了好久,有人说是把DBGrideh 关连的adoquery 的locktype的值设为ltBatchOpt原创 2010-06-02 14:57:00 · 5737 阅读 · 0 评论 -
DELPHI的BPL使用
DELPHI的BPL使用 了解BPL和DLL的关系将有助于我们更好地理解DELPHI在构件制作、运用和动态、静态编译的工作方式。对初学DELPHI但仍对DELPHI开发不甚清晰的朋友有一定帮助。BPL vs. DLL(原文http://www.delphi3000.com/ 翻译:房客)第一部分:有关包的介绍一般我们编写编译一个DELPHI应用程序时,会产生转载 2015-12-29 09:51:56 · 9109 阅读 · 0 评论