tsdima писал(а):
512 - ни туда, ни сюда
А вот это не я придумал, так и было раньше. Но сейчас поправлю.
А сколько это будет в байтах, мне кажется, что должно быть
65534 плюс 0-й байт и конец строки #0, и тогда получается 65536
------------ Дoбавленo:
tsdima писал(а):
запрашивать функцией GetMailslotInfo
Пожалуй, лучший вариант, но это же только в сервере, в клиенте этого нет, или тоже надо ограничить
------------ Дoбавленo:
Тут фигня получается -- GetMailslotInfo выдает размер столько, сколько прописано в CreateMailslot, если поставить 0 (неограниченный размер), то считывает тоже 0, и чего делать дальше
------------ Дoбавленo:
tsdima писал(а):
потом ещё и внутри if после Sender.Synchronize(SyncExec);
А нафиг не надо в if, только один раз, перед созданием потока, больше он не меняется, специально проверил, но это если как я сделал, с копированием в окончательную переменную, длину которой, устанавливаем по факту чтения.
------------ Дoбавленo:
И не дофига ли резервирование буфера в 64 кб
Прикинь, каждый созданный слот будет резервировать 64 кило
------------ Дoбавленo:
Я вот чего накидал, может так лучше будет
Тут получается, что в s я копирую уже не 64 кило, а только, сколько приняли, после чего сам буфер str возвращается к исходному размеру и готов в следующем запросе уже принимать данные, а что будет с s уже никого не волнует.
------------ Дoбавленo:
Или все таки, вот так более правильно
Но не получится ли здесь так, что когда я даю комманду на исполнение SyncExec, в SyncExec может произойти задержка в обработке буфера, и наступит время исполнения следующего _OnExec, а буфер-то не определен еще
Я припоминаю, что у себя я такое встречал, когда организовал поток в Com-порту, практически по такой же схеме, но обработчик буфера был очень длинный и тормознутый, в результате, мне пришлось делать промежуточный буфер, как в первом варианте.
------------ Дoбавленo:
Ну что, я добил HDE (HiAsm Date Exchange). Что мне понравилось, так это, практически мгновенная, пересылка очень больших стримов. Картинки размером 1024x768 дольше отрисовывало, чем передавало (теперь понятно, почему Total так шустро вскрывает и передает тексты любой длины).