![]() |
#2
quickburro2008-08-16 10:52
type
TFileListRecord=record SourceName: string; SourceType: integer; {0-文件夹 1-文件} DirSearched: boolean; {文件夹是否已经扫描过,用于获取文件列表的标志} end; ...... FileCount: integer; {复制文件的总数} Files: array of TFileListRecord; {文件列表} ...... // // 获取源文件夹下需要安装的文件的列表... procedure TForm5.GetFileList; var j: integer; begin // // 初始化文件列表,将顶部文件夹入数组... FileCount:=1; setlength(Files,filecount); files[0].SourceName:=s_DefaultDir+'QuickBurro'; files[0].SourceType:=0; files[0].DirSearched:=false; // // 开始扫描每个未被扫描过的文件夹下的文件,直到所有文件夹都被扫描完成... j:=GetDirIndex; {得到一个未被扫描的文件夹的索引号} while j>=0 do begin // // 得到该文件夹下的文件列表... GetDirFiles(j); files[j].DirSearched:=true; {设置为已扫描} // // 继续扫描下个文件夹... j:=GetDirIndex; {得到下一个未被扫描的文件夹的索引号} end; end; // // 得到一个未被扫描的文件夹的索引号的函数... function TForm5.GetDirIndex(): integer; var i: integer; begin result:=-1; for i:=0 to filecount-1 do if (files[i].SourceType=0) and (not files[i].DirSearched) then begin result:=i; break; end; end; // // 得到一个文件夹下的文件列表并将它们加入数组的过程... procedure TForm5.GetDirFiles(aIndex: integer); var sr: TSearchRec; j: integer; begin // // 开始查找... if FindFirst(files[aIndex].SourceName+'\*.*', faAnyFile, sr) = 0 then begin // // 保存首个... if (sr.name<>'.') and (sr.name<>'..') and (sr.Attr<>faVolumeID) then begin j:=filecount; inc(filecount); setlength(files,filecount); files[j].SourceName:=files[aIndex].SourceName+'\'+sr.name; // // 假如是目录... if sr.Attr=faDirectory then begin files[j].SourceType:=0; files[j].DirSearched:=false; end // // 假如是文件... else begin files[j].SourceType:=1; files[j].DirSearched:=true; end; end; // // 循环查找... while FindNext(sr) = 0 do begin // // 保存下个... if (sr.name<>'.') and (sr.name<>'..') and (sr.Attr<>faVolumeID) then begin j:=filecount; inc(filecount); setlength(files,filecount); files[j].SourceName:=files[aIndex].SourceName+'\'+sr.name; // // 假如是目录... if sr.Attr=faDirectory then begin files[j].SourceType:=0; files[j].DirSearched:=false; end // // 假如是文件... else begin files[j].SourceType:=1; files[j].DirSearched:=true; end; end; end; // // 结束查找... SysUtils.FindClose(sr); end; end; |
小弟是初学者,请各位高手指教了:我想把指定文件夹的文件名读出来,然后 把它们存成一个表,字段有文件名,文件类型,文件大小,应该如何实现呢?
先在这里谢过了……