Delphi checkboxlist和带有进度的复制文件

时间:2014-05-03 17:00:15

标签: delphi

关注此FileCopyProgress正在处理单个文件,需要它才能使用多个文件 有一个checboxlist来填充目录中的文件< - 工作正常 可以复制单个文件没问题,但需要复制选中的每个文件

填充复选框列表的代码

procedure ListFileDir(Ext: string;Path: string; FileList: TStrings);
var
SR: TSearchRec;
begin
 if FindFirst(Path + Ext, faAnyFile, SR) = 0 then
 begin
  repeat
   FileList.Add(UpperCase(SR.Name));
   until FindNext(SR) <> 0;
   FindClose(SR);
   end;
end;

检查是否已选中复选框的代码

{ checkboxes }
for i := 0 to cblLogs.Items.Count - 1 do
if cblLogs.Checked[i] then
  s := s + cblLogs.Items[i];

Problem

1 个答案:

答案 0 :(得分:3)

您的问题是您要将所有名称添加到单个字符串中。那不会奏效。你需要做这样的事情:

{ checkboxes }
for i := 0 to cblLogs.Items.Count - 1 do
if cblLogs.Checked[i] then
  TurboFileCopy(cblLogs.Items[i], 'X:\' + cblLogs.Items[i], nil);

或者你也可以建立一个字符串列表,稍后再使用它:

filesToCopy := TStringList.Create;

...

for i := 0 to cblLogs.Items.Count - 1 do
if cblLogs.Checked[i] then
  filesToCopy.Add(cblLogs.Items[i]);

...

for i := 0 to filesToCopy.Count - 1 do
  TurboFileCopy(filesToCopy[i], BuildTargetFileName(filesToCopy[i]), nil);

这将分别处理每个文件。