Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.03.2009, 16:38   #1
Altera
Старожил
 
Аватар для Altera
 
Регистрация: 29.01.2008
Сообщений: 2,406
Злость Когда отправляю tStream, теряю 4 байта.

Привет всем! У меня опять проблемы с tStream;

Короче делю так:

Слиент:
Код:
procedure TS.send_btnClick(Sender: TObject);
var
s: tfileStream;
begin
   s := tFileStream.Create('d:\file.tmp', fmOpenRead);

   client.IOHandler.Write(s); {client: tIdTCPClient     (indy10)}

   log.Items.Add('Client: '+mes+'   '+intToStr(s.Size)+' Bytes');

   s.Free;
end;
Сервер: (tIdTCPServer)
Код:
...
s := tFileStream.Create('d:\Newfile.tmp', fmCreate);
...

procedure TsMain_form.serverExecute(AContext: TIdContext);
begin
   aContext.Connection.IOHandler.ReadStream(s);
end;

...
s.free
...
Дело в том, что первые 4 байта почему-то теряются
Помогите, чем можете...

Последний раз редактировалось Altera; 19.03.2009 в 16:43.
Altera вне форума Ответить с цитированием
Старый 19.03.2009, 16:44   #2
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

разреши Indy Отправлять размер потока
Цитата:
procedure Write(
AStream: TIdStream,
ASize: Int64 = 0,
AWriteByteCount: Boolean = False
); virtual; overload;
Parameters
Parameters Description
AStream Stream with content to write to the IOHandler.
ASize Number of bytes from the stream to write to the IOHandler. Default value is 0.
AWriteByteCount Indicates if the bytecount for the operation is written to the IOHandler. Default value is False
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Старый 19.03.2009, 17:35   #3
Altera
Старожил
 
Аватар для Altera
 
Регистрация: 29.01.2008
Сообщений: 2,406
По умолчанию

Да, заработало! Спасибо Квэнди!

Я тут прикололся по ходу. В справке написано, что второй параметр, оказывается, указывает с какого байта будет производиться передача.
Altera вне форума Ответить с цитированием
Старый 19.03.2009, 19:05   #4
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

Цитата:
ASize Number of bytes from the stream to write to the IOHandler. Default value is 0.
это из справки
Asize кол-во байт из потока для записи в IOHandler. Значение по умолчанию-0
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
взятие старшего и младшего байта Djaconda Общие вопросы Delphi 2 29.09.2008 09:25
Вывод байта в двоичном пердставлении (С++) trollik Помощь студентам 6 01.09.2008 23:55
Возникает исключение при TStream.Free eks-s Работа с сетью в Delphi 16 10.03.2008 13:43
Помогите с получением TStream в CGI boades Работа с сетью в Delphi 0 25.10.2007 10:25
Как узнать когда браузер скачивает, а когда нет? iPod Работа с сетью в Delphi 1 07.05.2007 15:16