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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 06.03.2010, 21:57
Аватар для Лунтик-Некрофил
Лунтик-Некрофил Лунтик-Некрофил вне форума
Начинающий
 
Регистрация: 28.09.2009
Сообщения: 165
Репутация: 12
По умолчанию Работа с файлом

Работаю с сокетами, возник вопрос - как отследить скачку файла? Т.е. отправляю файл с клиента на сервер, как мне проследить сколько байт файла уже скачалось? Файл передаю примитивно:
Код:
Socket.SendStream(TFileStream.Create('123.txt', fmOpenRead or fmShareDenyWrite));
Принимаю:
Код:
  private
 FStream: TFileStream;

-//-//-

procedure TForm1.ClientSocket1Read(Sender: TObject;
  Socket: TCustomWinSocket);
var
iLen: Integer;
Bfr: Pointer;
begin
iLen := Socket.ReceiveLength;
GetMem(Bfr, iLen);
try
Socket.ReceiveBuf(Bfr^, iLen);
FStream.Write(Bfr^, iLen);
finally
FreeMem(Bfr);
end;
end;


procedure TForm1.ClientSocket1Connect(Sender: TObject;
  Socket: TCustomWinSocket);
begin
FStream := TFileStream.Create('1.txt', fmCreate or fmShareDenyWrite); 
end;

Как мне вывести процесс передачи например в progressbar?
__________________
Алкоголик-аморал, явная угроза обществу
Блин, я уже местный, а все равно нифига не знаю...
Ответить с цитированием
  #2  
Старый 07.03.2010, 14:34
Ama Ama вне форума
Активный
 
Регистрация: 15.07.2008
Сообщения: 260
Репутация: 23
По умолчанию

Ну тут все просто. Перед отправлением файла надо отправить размер, а потом при получении измерять размер потока полученного и результат в прогресс.
__________________
APPLICATION.TERMINATOR
Ответить с цитированием
  #3  
Старый 08.03.2010, 00:46
Аватар для PhoeniX
PhoeniX PhoeniX вне форума
Always hardcore!
 
Регистрация: 04.03.2009
Адрес: СПб
Сообщения: 3,239
Версия Delphi: GCC/FPC/FASM
Репутация: 62149
По умолчанию

Ama, не так всё просто. Этим мы позволим вывести процесс на сервере, но, как я понял, это надо сделать и для клиента.

Я насколько помню, при считывании через TFileStream, изменяется его свойство Position... Можно плясать с ним, вопрос, как... Вот этого не догоняю.
Но, куда копать, направил.
__________________
Оставайтесь хорошими людьми...
VK id2634397, ds [at] phoenix [dot] dj
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

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

ВКонтакте   Facebook   Twitter