delphi串口操作大全.docx
- 文档编号:10090108
- 上传时间:2023-02-08
- 格式:DOCX
- 页数:48
- 大小:265.16KB
delphi串口操作大全.docx
《delphi串口操作大全.docx》由会员分享,可在线阅读,更多相关《delphi串口操作大全.docx(48页珍藏版)》请在冰豆网上搜索。
delphi串口操作大全
delphi串口操作大全(总31页)
32位Delphi程序中可利用TRegistry对象来存取注册表文件中的信息。
一、创建和释放TRegistry对象
1.创建TRegistry对象。
为了操作注册表,要创建一个TRegistry对象:
ARegistry:
=;
2.释放TRegistry对象。
对注册表操作结束后,应释放TRegistry对象所占内存:
。
二、指定要操作的键
操作注册表时,首先应指定操作的主键:
先给属性RootKey赋值以指定根键,然后用方法OpenKey来指定要操作的主键名。
1.指定根键(RootKey)。
根键是注册表的入口,也注册表信息的分类,其值可为:
HKEY—CLASSES—ROOT:
存储整个系统对象类信息,如ActiveX对象注册、文件关联等信息。
HKEY—CURRENT—USER:
存储当前用户的配置信息。
为属性RootKey的默认值。
HKEY—LOCAL—MACHINE:
存储当前系统的软硬件配置信息。
应用程序自己的信息可以存储在该根键下。
HKEY—USERS:
存储所有用户通用的配置信息。
还可以是HKEY—CURRENT—CONFIG、HKEY—DYN—DATA。
2.指定要操作的主键。
FunctionOpenKey(constKey:
string;CanCreate:
Boolean):
Boolean;
Key:
主键名,是键名全名中除去根键的部分,如Software\Borland\Delphi。
CanCreate:
在指定的主键名不存在时,是否允许创建该主键,True表示允许。
返回值True表示操作成功。
3.关闭当前主键。
在读取或存储信息之后,应及时将关闭当前主键:
procedureCloseKey。
三、从注册表中读取信息
Read系列方法从注册表读取指定的信息(字符串、二进制和十六进制),并转换为指定的类型。
系列方法。
functionReadString(constName:
string):
string;
读取一个字符串值,Name为字符串名称。
functionReadInteger(constName:
string):
Integer;
读取一个整数值,Name为整数名称。
functionReadBinaryData(constName:
string;varBuffer;BufSize:
Integer):
Integer;
读取二进制值,Name为二进制值名称,Buffer为接收缓冲区,BufSize为缓冲区大小,返回为实际读取的字节数。
其它方法还有:
ReadBool、ReadCurrency、ReadDate、ReadDateTime、ReadFloat、ReadTime。
2.读取信息一例(显示Windows的版本)。
在HKEY—LOCAL—MACHINE\Software\Microsoft\Windows\CurrentVersion下,有三个字符串值Version、VersionNumber和SubVersionNumber,用于记录当前Windows的版本号。
{请在Uses中包含Registry单元}
procedure(Sender:
TObject);
var
ARegistry:
TRegistry;
begin
ARegistry:
=;
入信息一例。
下面程序使Delphi随Windows启动而自动运行。
var
ARegistry:
TRegistry;
begin
ARegistry:
=;
建新主键:
functionCreateKey(constKey:
string):
Boolean。
Key即为主键名,返回值True表示操作成功。
2.删除主键:
functionDeleteKey(constKey:
string):
Boolean。
Key即为主键名,返回值True表示操作成功。
3.复制或移动主键:
procedureMoveKey(constOldName,NewName:
string;Delete:
Boolean)。
OldName、NewName分别表示源主键名和目标主键名;Delete表示是否删除源主键,True表示删除,False表示保留。
复制或移动一个主键将复制或移动该子键下的所有数据值和子键内容。
4.判断指定主键是否存在,其下是否有主键,并获取主键名称。
KeyExists用于判断指定主键是否存在:
functionKeyExists(constKey:
string):
Boolean;取主键下的数据值名称:
procedureGetValueNames(Strings:
TStrings)。
Strings用于返回当前主键下各数值名称。
如要获取当前系统中的拨号连接名称,可利用获取主键HKEY—USERS\.DEFAULT\RemoteAccess\Addresses下的数值名称的方法来进行。
6.判断数值名称存在、数值名称改名。
ValueExists用于判断数值名称是否存在:
functionValueExists(constName:
string):
Boolean;
返回值为True表示数值名称存在。
RenameValue用于数值名称改名:
procedureRenameValue(constOldName,NewName:
string);
以上是注册表常用操作所对应的TRegistry的方法和属性,其它方法和属性请参见Delphi联机帮助文件。
以上程序在PWIN98+Delphi下调试通过。
2003-11-2011:
53:
00
发表评语»»»
2003-11-2011:
59:
20注册表中对编程常用的几项(ODBC/BDE/Internet/Windows)我用的是WINDOWS2000,WIN2000的REGEDIT提供了类似IE中收藏夹的功能,我的收藏夹中有几个或许对大家编程时会有帮助(这是本人在编程过程中的探索出来的,请高手指教):
1。
关于ODBC和DBE:
HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\\ODBCFileDSN
有你的COMPUTER上ODBC的FILEDSN的存放的缺省路径,如果你建立FILEDSN的时候选择了自己的路径,那你就得小心了,系统不会为你保存该路径,你的自己记住它,:
-(;
HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\\ODBCDrivers
列出了你的所有ODBCDRIVER,
关于ODBCDRIVER的名称,有一个比较有趣的地方:
不知大家又没有用取过系统ODBCDRIVER名,我用的时候DRIVER名最长只能取到31个字符,剩下的就被截掉了,不知是我编程有问题还是DELPHI的BUG;
HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\
列出了你的所有ODBCDRIVER的详细配置;
HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\
列出了你的所有SYSTEMDSN以及它们的配置情况;
HKEY_CURRENT_USER\Software\ODBC\
列出了你的所有USERDSN以及它们的配置情况;
知道了以上的几个主键后,你就可以在程序中实现%SystemRoot%\system32\的大部分功能了。
HKEY_LOCAL_MACHINE\SOFTWARE\Borland\DatabaseEngine
下面是你的DBE的配置,我就不多说了,大家拿它和BDE用户界面一比较就明白了。
2。
关于INTERNET编程:
HKEY_CLASSES_ROOT\htmlfile
系统对HTMLFILE的处理定义;
HKEY_LOCAL_MACHINE\SOFTWARE\Clients
INTERNETOption中INTERNETPROGRAM的设定,尤其重要的是其中的
HKEY_LOCAL_MACHINE\SOFTWARE\Clients\Mail。
3。
关于WINDOWS编程
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
每次该用户启动WINDOWS必定执行下面的命令(如果有,当然一般都有),
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Runonce
该用户启动WINDOWS必定执行下面的命令(如果有),执行完后由WINDOWS把命令删掉,安装软件的时候特别有用,
以上两处是针对特定用户的,在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion下还有类似的地方,是针对所有用户的,我就不罗嗦了。
2003-11-2012:
16:
38Delphi中注册表构件TRegistry的应用在及以上版本中,提供了一个构件TRegistry。
在程序中可以利用它来实现对WIN95/98/NT注册表的操作,可以很方便地在注册表中增加、修改和删除键值。
这样可以在程序中完成一些特殊的功能。
----TRegistry常用的属性和方法有(具体作用和用法请参考Delphi帮
助):
RootKey、CreateKey、OpenKey、CloseKey、DeleteKey、ReadXXXX、WriteXXXX
(XXXX表示数据类型如String、Integer等)
我们用到的属性和方法有:
RootKey:
注册表的根键名(如HKEY_LOCAL_MACHINE等)
OpenKey(KeyName:
string;CanCreate:
boolean):
使当前键为KeyName,CanCreate表示当指定的键不存在时是否创建,True表示创建
SetKey(KeyName,KeyValue:
string):
使键KeyName的值为KeyValue
----应用之一:
让自己的程序随WIN95/98/NT的启动而运行
当然,你可以在"启动"程序组中加入程序的快捷方式,但这样做好象不大明智,因为大多数程序在安装时不会这样做,而是在通过在注册表增加键值,让WIN95/98/NT在启动时运行自己的程序。
如果打开注册表,找到HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run,就会发现这个秘密了,原来许多自动运行的程序都在这里。
你也可以在这里增加一个键,让你的程序也随着WIN95/98/NT的启动而自己运行,成为WINDOWS下的TSR程序。
实现方法如下:
首先,在Uses中加上Registry单元
然后,写下面代码。
{将程序strExeFileName置为自动启动}
functionStartUpMyProgram(strPrompt,strExeFileName:
string):
boolean;
var
registerTemp:
TRegistry;
begin
registerTemp:
=;
OC文件与自己关联,当你双击一个DOC文件,就会启动MSWORD,打开你指定的DOC文件。
你也可以把一个文件类型与一个程序关联起来,其秘密还是在注册表中。
如果打开注册表,找到HKEY_CLASSES_ROOT,就会发现这里已经有很多文件类型。
你也可以在这里增加一个键,建立自己的文件关联。
建立文件关联,一般应有两个步骤:
(1)根据文件类型的扩展名,指定对应的键名(如doc文件对应的键为doc_auto_file)
该键及其子键的值,将定义该类型的文件的类型说明和操作(如打开、编辑)说明
(2)在指定的键名下,建立子键,指明文件类型说明和操作对应的程序信息
例如,我们可以为.DBF文件建立文件关联,其文件类型说明为"xBase数据表",使其打开(Open)文件的操作对应程序C:
\ProgramFiles\Borland\DBD\。
首先,应在注册表的根键HKEY_CLASSES_ROOT下建立一个键,键名为.DBF,默认值为DBF_Auto_File,表示DBF类型文件的关联操作信息记录在键HKEY_CLASSES_ROOT\DBF_Auto_File下;然后,建立键
HKEY_CLASSES_ROOT\DBF_Auto_File,并设其默认值为"xBase数据表",表示文件类型说明;再建立键HKEY_CLASSES_ROOT\DBF_Auto_File\Shell\open\command,设置其默认值为C:
\ProgramFiles\Borland\DBD\ %1(其中"%1"为命令行参数),表示打开操作对应的程序信息。
具体实现如下:
同样,在Uses中加上Registry单元, 然后,写下面代码。
{将文件类型strFileExtension与程序
strExeFileName相关联,strDiscription为文件类型说明}
functionAssignToProgram(strFileExtension,strDiscription,strExeFileName:
string):
boolean;
var
registerTemp:
TRegistry;
begin
registerTemp:
=;
ileExt,如DBF对应'.DBF'
ifOpenKey('.'+strFileExtension,true)then
begin
result:
=false;
exit;
end;
ileExt默认值为FileExt_Auto_File,如'.DBF'对应'DBF_Auto_File'
WriteString('',strFileExtension+'_Auto_File');
CloseKey;
BF'对应'DBF_Auto_File'
ifOpenKey(strFileExtension+'_Auto_File',true)then
begin
result:
=false;
exit;
end;
BF'对应'DBF_Auto_File\shell\open\command'
ifOpenKey(strFileExtension+'_Auto_File\shell\open\command',true)then
begin
result:
=false;
exit;
end;
NK),你只要在这个目录下增加一个.LNK文件就可以了。
我们的任务,主要是利用TRegistry从注册表中获取Desktop的实际路径,默认为Windows目录下的Desktop子目录,如C:
\PWIN98\Desktop。
在注册表中Desktop的实际路径对应的键为HKEY_CURRENT_USER\Software\MicroSoft\Windows\CurrentVersion\Explorer\ShellFolders\Desktop。
同样,在Uses中加上Registry单元
然后,写下面代码。
{为程序strExeFileName在桌面建立快捷方式,运行参数为strParameters}
functionCreateShortcutOnDesktop(strExeFileName,strParameters:
string):
boolean;
var
registerTemp:
TRegistry;
strDesktopDirectory:
widestring;
shelllinkTemp:
IShellLink;
persistfileTemp:
IPersistFile;
begin
registerTemp:
=;
NK)
strDesktopDirectory:
=strDesktopDirectory+'\'+ExtractFileName(strExeFileName);
strDesktopDirectory:
=copy(strDesktopDirectory,1,length(strDesktopDirectory)-length(ExtractFileExt(strExeFileName)))+'.LNK';
Performalinefeedafterapprox.25numberssothelinelengthstayswithinlimits}
rdBinary:
begin
write(f,'hex:
');
j:
=(t);{determinesize}
getmem(p,j);{Allocatememory}
(t,p^,J);{readinthedata,treataspchar}
fork:
=0toj-1dobegin
Write(f,inttohex(byte(p[k]),2));{Writebyteashex}
ifk<>j-1then{notyetlastbyte}
begin
write(f,',');{thenwriteComma}
if(k>0)and((kmod25)=0)then{linetoolong}
writeln(f,'\');{thenwriteBackslash+lf}
end;{if}
end;{for}
freemem(p,j);{freethememory}
writeln(f);{Linefeed}
end;
ELSE
writeln(f,'""');{writeanemptystringifdatatypeillegal/unknown}
end;{case}
end;{for}
;
{valuenamesalldone,nolongerneeded}
;
{Nowalvaluesarewritten,weprocessallsubkeys}
{PerformthisprocessRECURSIVELY...}
fori:
=0to-1do
ProcessBranch(root+'\'+keys[i]);
;{thisbranchisready}
end;
begin
ifregroot[length(regroot)]='\'then{Notrailingbackslash}
setlength(regroot,length(regroot)-1);
Assignfile(f,filename);{createatextfile}
rewrite(f);
IFioresult<>0then
EXIT;
Writeln(f,'REGEDIT4');{"magickey"forregedit}
reg:
=;
try
:
=rootsection;
ProcessBranch(regroot);{Callthefunctionthatwritesthebranchandallsubbranches}
finally
;{ready}
close(f);
end;
end;
end.
2003-11-2012:
22:
54读写网络上其他计算机注册表的代码procedureNetReg;
var
R:
TRegistry;
S:
TStringList;
begin
R:
=;
S:
=;
WriteLn('\\OtherPC'));
WriteLn('Software'));
(S);
WriteLn;
;
;
end;
2003-11-2012:
27:
06关于查看注册表的程序unitregform;
interface
uses
Windows,Messages,SysUtils,Classes,Graphics,Controls,Forms,Dialogs,StdCtrls,Registry;
type
TForm1=class(TForm)
ListSub:
TListBox;
ListValues:
TListBox;
ComboKey:
TComboBox;
Label1:
TLabel;
Label2:
TLabel;
Label3:
TLabel;
Label4:
TLabel;
ComboLast:
TComboBox;
procedureFormCreate(Sender:
TObject);
procedureFormDestroy(Sender:
TObject);
procedureListSubClick(Sender:
TObject);
procedureComboKeyChange(Sender:
TObject);
procedureComboLastChange(Sender:
TObject);
private
Reg:
TRegistry;
public
procedureUpdateAll;
end;
var
Form1:
TForm1;
implementation
{$R*.DFM}
procedure(Sender:
TObject);
begin
Reg:
=;
('\',False);
UpdateAll;
2003-11-2013:
30:
00获得注册表项下的所有值Var
Reg:
TRegistry;
list:
TStrings;
i:
Integer;
Begin
Reg:
=;
:
='HKEY_LOCAL_MACHINE';
If('\Soft
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- delphi 串口 操作 大全