Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
  #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;
Ответить с цитированием
 


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 15:46.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025