delphi 文件流复制有关问题,诡异!求解

delphi 文件流复制问题,诡异!求解!
[code=Delphi(Pascal)][/code]
//前面代码为遍历文件夹下所有文件'ts1+DCIM\100DSCIM\ ts1 为移动盘符
for sf1 := 2 to sf -1 do
begin
try
memo1.Lines.Add('尝试复制:'+ts1 +'DCIM\100DSCIM\' + sfile[sf1]);
getpath := ts1 +'DCIM\100DSCIM\' + sfile[sf1];
setpath := ss + '\' + sfile[sf1];
  getStream := TFileStream.Create(getPath, fmOpenRead or fmShareExclusive);
  setStream := TFileStream.Create(setPath, fmCreate);
  memo1.Lines.Add('尝试:'+ts1 +'DCIM\100DSCIM\' + sfile[sf1]+'读入缓存');
  nnum := getStream.Size;
  setStream.Size := nnum;
  getStream.Position := 0;
  setStream.Position := 0;

  BufSize := nnum;
  block := BufSize div 100;
  GetMem(buf, BufSize);
  //ProgressBar1.Max := 100;
  //ProgressBar1.Min := 0;
  //ProgressBar1.Position := 0;

  while nnum <> 0 do
  begin
  Application.ProcessMessages;
  n := block;
  if n > nnum then n := nnum;
  getStream.ReadBuffer(buf^, n);
  setStream.WriteBuffer(buf^, n);
  if num = 1 then
  ProgressBar1.Position := Trunc((1 - nnum / BufSize) * 100);
  if num = 2 then
  ProgressBar2.Position := Trunc((1 - nnum / BufSize) * 100);
  if num = 3 then
  ProgressBar3.Position := Trunc((1 - nnum / BufSize) * 100);
  if num = 4 then
  ProgressBar4.Position := Trunc((1 - nnum / BufSize) * 100);
  if num = 5 then
  ProgressBar5.Position := Trunc((1 - nnum / BufSize) * 100);
  if num = 6 then
  ProgressBar6.Position := Trunc((1 - nnum / BufSize) * 100);
  if num = 7 then
  ProgressBar7.Position := Trunc((1 - nnum / BufSize) * 100);
  if num = 8 then
  ProgressBar8.Position := Trunc((1 - nnum / BufSize) * 100);
  if num = 9 then
  ProgressBar9.Position := Trunc((1 - nnum / BufSize) * 100);
  if num = 10 then
  ProgressBar10.Position := Trunc((1 - nnum / BufSize) * 100);
  if num = 11 then
  ProgressBar11.Position := Trunc((1 - nnum / BufSize) * 100);
  if num = 12 then
  ProgressBar12.Position := Trunc((1 - nnum / BufSize) * 100);
  if num = 13 then
  ProgressBar13.Position := Trunc((1 - nnum / BufSize) * 100);
  if num = 14 then
  ProgressBar14.Position := Trunc((1 - nnum / BufSize) * 100);
  if num = 15 then
  ProgressBar15.Position := Trunc((1 - nnum / BufSize) * 100);
  if num = 16 then
  ProgressBar16.Position := Trunc((1 - nnum / BufSize) * 100);
  Dec(nnum, n);
  end;
  result := 0;
  FreeMem(buf, BufSize);
  getStream.Free;
  setStream.Free;
  ProgressBar1.Position := 0;
  ProgressBar2.Position := 0;
  ProgressBar3.Position := 0;
  ProgressBar4.Position := 0;
  ProgressBar5.Position := 0;
  ProgressBar6.Position := 0;
  ProgressBar7.Position := 0;
  ProgressBar8.Position := 0;
  ProgressBar9.Position := 0;
  ProgressBar10.Position := 0;
  ProgressBar11.Position := 0;
  ProgressBar12.Position := 0;
  ProgressBar13.Position := 0;
  ProgressBar14.Position := 0;
  ProgressBar15.Position := 0;
  ProgressBar16.Position := 0;
  except
  memo1.Lines.Add('开始删除'+ss);
  //listbox1.Items.Add(datetimeTostr(NOW)+'第'+intTostr(num)+'端口:'+'->'+k2+'->'+k1+sfile[sf1]+'文件损坏,请检修!!!');
  FillChar(T1, SizeOf(T1), 0);
  //listbox1.Items.Add(datetimeTostr(NOW)+'第'+intTostr(num)+'端口:'+'->'+k2+'->'+k1+sfile[sf1]+'文件损坏,请检修!!!');
//showmessage(sfile[sf1]+'文件损坏');