Вверх ↑
Этот топик читают: Гость
Ответов: 542
Рейтинг: 12
#1: 2009-01-17 20:45:13 ЛС | профиль | цитата
уж много раз на форуме обсуждался вопрос о TCP_client. Когда еще на Delphi писал помню что у него были свойства по которим можно было узнать количество переданных байт от общего объема. А в HiAsm их почему то не вывели в точки. Будь такой выход HiTCP_client решилось бы сразу две задачи:
можно было бы узнать о завершении передачи данных и прикрутить ProgressBar.
Из за отсутствия таковых мне приходтся нагромождат кучу кода для проверки передачи данных и т.п.

карма: 0

0
vip
#1.1контекстная реклама от партнеров
Администрация
Ответов: 15294
Рейтинг: 1518
#2: 2009-01-17 20:46:37 ЛС | профиль | цитата
afandi писал(а):
помню что у него были свойства по которим можно было узнать количество переданных байт от общего объема

не было такого


карма: 26
0
Ответов: 542
Рейтинг: 12
#3: 2009-01-17 20:52:02 ЛС | профиль | цитата
Не это?
code_11446.txt
или эти

procedure TForm1.TcpClient1Receive(Sender: TObject; Buf: PChar;
var DataLen: Integer);
begin

end;

procedure TForm1.TcpClient1Send(Sender: TObject; Buf: PChar;
var DataLen: Integer);
begin

end;

end.


карма: 0

0
файлы: 1code_11446.txt [207B] [419]
Администрация
Ответов: 15294
Рейтинг: 1518
#4: 2009-01-17 21:37:32 ЛС | профиль | цитата
это событие, которое возвращает принятые данные и их длинну. Ни о каком общем объеме речь там не идет. В HiAsm же при передачи потока(Stream) объем данных передается в первую очередь и прогресс там можно вывести. Во всех иных случаях это задача ложится полностью на плечи разработчика
карма: 26
1
Голосовали:afandi
Ответов: 542
Рейтинг: 12
#5: 2009-01-17 21:49:17 ЛС | профиль | цитата
Dilma писал(а):
и прогресс там можно вывести
каким образом
карма: 0

0
Ответов: 1161
Рейтинг: 160
#6: 2009-01-17 22:13:36 ЛС | профиль | цитата
afandi писал(а):
каким образом

точка onProgress
карма: 0

1
Голосовали:afandi
Ответов: 542
Рейтинг: 12
#7: 2009-01-17 22:15:49 ЛС | профиль | цитата
точка он прогресс ничего "не выдала". может потому что у меня передаваемые данные всего пару килобайт?
карма: 0

0
Ответов: 590
Рейтинг: 19
#8: 2009-01-17 22:54:59 ЛС | профиль | цитата
afandi писал(а):
может потому что у меня передаваемые данные всего пару килобайт?

не... у меня и с файлами ни чего не выдает...
карма: 0

0
Ответов: 542
Рейтинг: 12
#9: 2009-01-17 22:57:15 ЛС | профиль | цитата
А Dilma, сказал что можно .... вывести
карма: 0

0
Администрация
Ответов: 15294
Рейтинг: 1518
#10: 2009-01-17 23:17:19 ЛС | профиль | цитата
она была не реализована, см. SVN
карма: 26
0
Ответов: 542
Рейтинг: 12
#11: 2009-01-18 01:25:34 ЛС | профиль | цитата
В скаченном SVN только файл TCP.pas да и тот размером меньше чем оригинал из пакета.
Но все же заменил взяв из SVN, перезапустил Хасм. Прогресс бар так и не заработал.
карма: 0

0
Ответов: 3851
Рейтинг: 159
#12: 2009-01-18 13:38:18 ЛС | профиль | цитата
afandi,
Dilma писал(а):
на плечи разработчика
как вариант - можно отправлять сообщение кусочками и уже по мере их передачи изменять положение прогресса..
карма: 0
начавший
0
Ответов: 590
Рейтинг: 19
#13: 2009-01-18 13:49:47 ЛС | профиль | цитата
Андрей. писал(а):
как вариант - можно отправлять сообщение кусочками и уже по мере их передачи изменять положение прогресса..

Помойму это не очень удобно...
Можно попробовать таким образом... получаем размер файла, а при передачи его через TCP, как нибудь отлавливаем кол-во полученных байт... и сверяем... но нужно, чтобы перед этим еще на TCP, поступили данные о размере файла...
карма: 0

0
Ответов: 3851
Рейтинг: 159
#14: 2009-01-18 14:26:37 ЛС | профиль | цитата
EcsTasY писал(а):
Помойму это не очень удобно...
вода, как известно, в 7 раз сытнее, чем ничего

EcsTasY писал(а):
как нибудь отлавливаем кол-во полученных байт...
мы здесь как раз и обсуждаем такую возможность (или невозможность?)
карма: 0
начавший
0
Ответов: 542
Рейтинг: 12
#15: 2009-01-18 14:33:20 ЛС | профиль | цитата
Можно наверное сделать и относительную шкалу.
Например путем запоминания отношения размера переданного файла на время передачи т.е. скорость.
а при последующей передачи зная скорость канала и объем передаваемого файла рисовать ProgressBar по этим параметрам.
И при каждое очередной передаче усредняя скороть передачи.
Вот только как узнать точно о завершении передачи данных?
Может быть после завершения передачи в точку onError выводить "0" как признак корректной передачи данных?
карма: 0

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)