Показать сообщение отдельно
  #1  
Старый 17.05.2010, 13:54
Sveta22 Sveta22 вне форума
Прохожий
 
Регистрация: 29.10.2008
Сообщения: 31
Репутация: 10
По умолчанию FileStream...Stream read error

Здравствуй… программа копирования, если копирую файл по сетке и связь обрывается то выходит ошибка Stream read erroe… Как можно её обойти?
Код:
...
      FindRes := FindNext(SR); // продолжить поиск
      Continue; // продолжить цикл
    end;
    F:= ExtractFilePath(parameter);
   Access := fmOpenReadWrite;
  ZeroMemory(@Temp, sizeof(Temp));
  Stream := TFileStream.Create(F + '\'+ SR.Name, fmOpenRead);
  if not FileExists(parameter2 + SR.Name) then
  Access := fmCreate;
  Stream1 := TFileStream.Create(parameter2 + SR.Name, Access);
  Gauge1.MaxValue := Stream.Size;
  Stream.Position := Stream1.Size;
  Stream1.Position := Stream1.Size;
  Label1.Caption := IntToStr(Stream1.Position);
  Label2.Caption := IntToStr(Stream.Size);
  Gauge1.Progress := Stream.Position;
     for i:=0 to NTFirewall1.Connections.Count - 1 do
      if (NTFirewall1.Connections.Items[i].Status = 0) then
   begin
    Stream.Free;
    Stream1.Free;
    ShowMessage('Связь прервана!');
    form1.Close;
   end;
  while Stream.Size <> Stream1.Size do
  begin
   if g  then
    begin
    button3.Visible:= true;
    Stream.Free;
    ShowMessage('Копирование прервано!');
    form1.Close;
  end;

   if (Stream.Size - Stream1.Position) < sizeof(Temp) then
    begin
      Stream1.CopyFrom(Stream, Stream.Size - Stream1.Position);
    end
      else
      Stream1.CopyFrom(Stream, sizeof(Temp));
      Gauge1.Progress := Stream.Position;
      Label1.Caption := (IntToStr(Stream.Position div 1024) + ' Кбайт' );
      Label2.Caption := (IntToStr(Stream.Size div 1024) + ' Кбайт' );
      Form1.Update;
      Application.ProcessMessages;

  end;
   FindRes := FindNext(SR);
   Stream.Free;
   Stream1.Free;


end;
FindClose(SR);

Код:
procedure TForm1.Button2Click(Sender: TObject);
begin
// отмена
  g:= true;
end;
Ответить с цитированием