delphi串口操作大全.docx

上传人:b****2 文档编号:3503121 上传时间:2023-05-05 格式:DOCX 页数:48 大小:265.16KB
下载 相关 举报
delphi串口操作大全.docx_第1页
第1页 / 共48页
delphi串口操作大全.docx_第2页
第2页 / 共48页
delphi串口操作大全.docx_第3页
第3页 / 共48页
delphi串口操作大全.docx_第4页
第4页 / 共48页
delphi串口操作大全.docx_第5页
第5页 / 共48页
delphi串口操作大全.docx_第6页
第6页 / 共48页
delphi串口操作大全.docx_第7页
第7页 / 共48页
delphi串口操作大全.docx_第8页
第8页 / 共48页
delphi串口操作大全.docx_第9页
第9页 / 共48页
delphi串口操作大全.docx_第10页
第10页 / 共48页
delphi串口操作大全.docx_第11页
第11页 / 共48页
delphi串口操作大全.docx_第12页
第12页 / 共48页
delphi串口操作大全.docx_第13页
第13页 / 共48页
delphi串口操作大全.docx_第14页
第14页 / 共48页
delphi串口操作大全.docx_第15页
第15页 / 共48页
delphi串口操作大全.docx_第16页
第16页 / 共48页
delphi串口操作大全.docx_第17页
第17页 / 共48页
delphi串口操作大全.docx_第18页
第18页 / 共48页
delphi串口操作大全.docx_第19页
第19页 / 共48页
delphi串口操作大全.docx_第20页
第20页 / 共48页
亲,该文档总共48页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

delphi串口操作大全.docx

《delphi串口操作大全.docx》由会员分享,可在线阅读,更多相关《delphi串口操作大全.docx(48页珍藏版)》请在冰点文库上搜索。

delphi串口操作大全.docx

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

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2