2017.10.18
坑!string的内容是从1开始存的
(1)编译开关{$H-}:用string声明的是一个短字符串,索引0处存放的是其实际长度。
(2)编译开关{$H+}: 用string声明的是一个长字符串,索引从1开始,没有索引为0的字符。
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
看到一篇对搜寻某文件夹下的所有文件的代码的注解,非常好,摘抄到这里
DELPHI 这几句是什么意思?
var
sr:TSearchRec;//文件目录搜索记录类用来储存返回的文件的一些数据与FindFist,FindNext有关
Err:Integer;
begin
Err:=FindFirst('*.*',$37,sr);//(1) $37指什么?
while Err=0 do
begin
if sr.Name[1]<>'.' then阀川脆沸诒度错砂氮棘// (2) sr.Name[1]<>'.'中[1]<>'.'指什么意思
begin
if (sr.Attr and faDirectory)=0 then //(3) (sr.Attr and faDirectory)=0这是目录还是文件?
begin
treeview1.Items.AddChildFirst(bnode,sr.Name);
end;
if (sr.Attr and fadirectory)=faDirectory then
begin
filenode:=treeview1.Items.AddChildFirst(bnode,sr.Name);//(4) AddChildFirst属性是什么意思
chdir(sr.Name);//(5) 这句跟下面chdir('..')那句都解释一下
application.ProcessMessages;
myFind(filenode);
chdir('..');
end;
end;
err:=findNext(sr);
end;
yncg2046?2009-7-28
(1)$37是查找文件的属性,基本上是所有的文件都有找了,属性定义见帮助文件
Constant Value Description
----------------------------------------------
faReadOnly $00000001 Read-only files
faHidden $00000002 Hidden files
faSysFile $00000004 System files
faVolumeID $00000008 Volume ID files
faDirectory $00000010 Directory files
faArchive $00000020 Archive files
faAnyFile $0000003F 阀川脆沸诒度错砂氮棘Any file
(2)文件名第一个字符不是"." 在一个文件夹中有一个名称为"."的特殊文件代表本文件夹(在命令符模式下执行dir命令可以看到),相应的,还有一个".."代表上级目录(这个与问题5有关)
(3)文件
(4)在treeview1控件上加一个子结点
(5)改变当前目录,进入子目录中,执行myFind函数(估计这个自定义函数的功能是递归查找子目录中的文件了),执行完了调用chdir("..")返回上级目录.
整体看上去,这个函数就是读取一个文件夹,把下级的文件和文件夹挂到一个树控件上.
------------------------------------------------------------------------------------------------------------------------------------------------------------------