用注册表:start.exe中按钮(或菜单,功能是运行duospeak.exe)点击后,在注册表内写一键值比如a,其值为系统当期时间,然后调用duospeak.exe,后面再加一段延时代码比如3秒,3秒后删除该键值;在duospeak.exe程序中,运行前先读取注知凯册表中a的值,如果未读到,提示从start.exe启动,如果读到a(读取a后即删除之,程序已运行,a就没用了):如果a的值与系统当期时间相差在3秒之内,正常启动,否则提示...,以下为用vb原理:
start.exe:
private sub command1_click
1、在注搭薯唤册表中写入a,其值为now,
为了防止手工添加,可将值加密,如果有必要,可用不可逆的加密法。
2、延时
t=now
do while 1
doevents'注意此句,一定要交出控制权,否则程序处于假死状态
if t与now相差超过3秒 then exit do'延时3秒
loop
3、删除键值a
延时后,duospeak.exe要么已正常运行,要么已中断退出,键值a的使命已完成,也就手如是说,a是一个临时的桥梁
end sub
duospeak.exe中:
private sub form_load
1、读取注册表a的值
2、判断a值是否读到
if 没有读到 then
msgbox "请从start.exe启动",48
end
end if
3、删除注册表中的键值a
4、判断a值是否符合规则
if a不符合加密算法或与now相差超过3秒 then
msgbox "请从start.exe启动",48
end
end if
5、正常运行程序
end sub
Truncate方法
该方法是通过调用BDE API函数实现的 其实现如下
procedure TBlobStream Truncate
begin
if FOpened then
begin
Check(DbiTruncateBlob(FDataSet Handle FRecord FFieldNo FPosition))
FModified := True
end
end
该方法从BLOB流的当前位置起删除所有数据 并设置修改漏乎标志FModified为True 在Delphi VCL中许多部件特别是数据库应用方面的部件都用BDE API函数完成对数据库的访问 如Data Access和Data Control部件 各种数据库部件都是BDE API函数外层的包装简化了对数据库的访问 *** 作 BDE API中还提供了避开BDE配置工具在程序中直接处理Alias(建立 修改 删除等)的函数支持 这也是部件所没有提供的 在Delphi数据库应用安装程序中 这些Alias *** 作函数无疑是相当重要的 有关BDE API函数的详细介绍 可阅读Delphi Client/Server Suite所带的BDE API 帮助文件
读写对象的实现原理和应用
读写对象(Filer)包括TFiler对象 TReader对象和riter对象 TFiler对象是文件读写的基础对象 在应用程序中使用的主要是TReader和riter TReader和riter对象都直接从TFiler对象继承 TFiler对象定义了Filer对象的基本属性和方法
Filer对象主要完成两大功能
● 存取窗体文件和窗体文件中的部件
● 提供数据缓冲 加快数据读写 *** 作
TFiler对象
TFiler对象是TReader和riter的抽象类 定义了用于部件存储的基本属性和方法 它定义了Root属性 Root指明了所读或写的部件的根对象 它的Create方法将Stream对象作为传入参数以建立与Stream对象的联系 Filer对象的具体读写 *** 作都是由Stream对象完成 因此 只要是Stream对象所能访问的媒介都能由Filer对象存取部件 TFiler 对象还提供了两个定义属性的方法闷孙 DefineProperty和DefineBinaryProperty 这两个方法使对象能读写不在部件published部分定义的属性
因为Filer对象主要用于存取Delphi的窗体文件和窗体文件中的部件 所以要清楚地理解Filer对象就要清楚Delphi 窗体文件(DFM文件)的结构
DFM文件是用于Delphi存储窗体的 窗体是Delphi可视化程序设计的核心 窗体对应Delphi应用程序中的窗口 窗体中的可视部件对应窗口中的界面元素 非可视部件如TTable和TOpenDialog 对应Delphi应用程序的某项功能 Delphi应用程序的设计实际上是以窗体的设计为中心 因此 DFM文件在Delphi应用设计中也占很重要的位置 窗体中的所有元素包括窗体自身的属性都包含在DFM文件中
在Delphi应用程序窗口 界面元素是按拥有关系相互联系的 因此树状结构是最自然的表达形式 相应地 窗体中的部件也是按树状结构组织 对应在DFM文件中 也要表达这种关系 DFM文件在物理上 是以二进制方式存储的 在逻辑上则是以树状结构安排各部件的关系 Delphi编辑窗口支持以文本方式显示DFM文件 从该文本中可蚂搜链以看清窗体的树状结构 下面是DFM文件的文本显示
Object Form : TForm
Left =
Top =
ActiveControl = DBIMage
…
Object Panell: TPanel
Left =
…
Object DBLabel : TDBText
…
end
Object DBImage : TDBImage
…
end
end
Object Panel : TPanel
Left =
…
Object Label : TLable
…
end
end
Object Panel : TPanel
Left =
…
Object DBLabel : TDBText
…
end
end
end
关于DFM文件中存储属性值的规则 请参见自定义部件开发这一章
对照TFiler对象的属性 Root属性就表示部件树的根──窗体 Filer对象的许多方法都是读从根起始的树中所有的部件 Ancestor属性表示根的祖先对象 IgnoreChildren属性则是读部件时忽略根的子结点
下面介绍Filer对象的属性和方法
返回目录 DELPHI基础教程
编辑推荐
Java程序设计培训视频教程
J EE高级框架实战培训视频教程
Visual C++音频/视频技术开发与实战
Oracle索引技术
ORACLE G数据库开发优化指南
Java程序性能优化 让你的Java程序更快 更稳定
C嵌入式编程设计模式
Android游戏开发实践指南
lishixinzhi/Article/program/Delphi/201311/25103
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)