![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
ClientSocketRead [D6, Win2k]
Dmitriy Polskoy © (2002-11-20 17:58:00)Есть ли возможность помещения данного обработчика в отдельный поток, а то при приеме большого файла клиент подвисает?
Digitman (2002-11-21 14:38:00) [1]Ну вот же, почти рядом ветка идет
http://delphi.mastak.ru/cgi-bin/forum.pl?look=1&id=1037796770&n=4
Человек там "бьется лбом" ну практически в те же грабли !
Ну почему не прочитать-то да не вникнуть ?
Или вы друг у друга код сдираете ? Уж больно похоже)
Digitman (2002-11-21 14:32:00) [2]Ну почему SendText()/ReceiveText()-то ?
Что, других методов нет ?
Ты у кого это содрал ? Зачем ты себе геморрой зарабатываешь, повторяя (практически - один-в-один !) чужие ошибки ?
Ну ведь каждый же божий день здесь разжевываем, почему это плохо и, если не так уж и плохо, то - конкретно в каких случаях ....
Dmitriy Polskoy (2002-11-21 14:25:00) [3]Да охать и я умею. Вы бы лучше помогли разобраться. Насколько я понимаю, надо ограничивать длинну входных данных и работать только с ними. Или опять мимо?
Digitman (2002-11-21 14:15:00) [4]еще как - оххххх(....
Polevi (2002-11-21 14:06:00) [5]ох..
Dmitriy Polskoy (2002-11-21 14:03:00) [6]А он так и считывается
procedure TClientForm.ClientSocket1Read(Sender: TObject;
Socket: TCustomWinSocket);
var
Str: string;
Sp: string;
label Receive;
begin
Str := Socket.ReceiveText;
Sp := Copy(Str, 1, 4);
if Sp <> "file" then goto Receive;
if Sp = "file" then
begin
Delete(Str, 1, 5);
FileName := Copy(Str, 1, Pos("#", Str) -1);
Delete(Str, 1, Length(FileName) +1);
Size := StrToInt(Copy(Str, 1, Pos("#", Str) -1));
StatusBar.Panels.Items[0].Text := "
Digitman (2002-11-21 08:21:00) [7]есть такая возможность
впрочем, никто не заставляет тебя в OnClientRead считывать сразу весь поток (да и некорректно это). Можно считывать вх.поток поблочно, один блок небольшого размера за время обработки одного события OnRead.