Страница 1 из 2
Wait_Timeout и сокеты
Добавлено: 06 июн 2005, 08:17
UUU
В общем, компонента использует стандартные виндовые сокеты и работает через них.
Встал вопрос увеличить (изменять) время установления связи при обрыве соединения.
Посмотрев компоненты, предположил, что в настоящий момент данный тайм аут заложен в константе WAIT_TIMEOUT и составляет 282.
Но изменить программно не получается это значение.
Ни через move, ни через @, ни чере-з absolute. Все хочет работать с переменными, а это константа.
Можно компоненту переделать под работу с другим именем. но оно тоже должно быть константой. При этом указание
const My_TimeOut : word - WAIT_ TIMEOUT;
также не проходит как изменяемая константа :-(.
Добавлено: 06 июн 2005, 11:57
LAngel
А если посмотреть исходник компоненты, где она этот таймаут использует и вписать туда переменную?
Добавлено: 06 июн 2005, 13:34
UUU
ПРобовал, там это имя используется еще и в case и еще в некоторых обращениях, куда только константа может идти :-(
Добавлено: 06 июн 2005, 14:58
LAngel
дык подправь

Добавлено: 06 июн 2005, 15:29
UUU
Делаю:
const
DEFAULT_TIMEOUT = 5000;
MY_WAIT_TIMEOUT: integer = WAIT_TIMEOUT;
далее:
case my_result of
WAIT_OBJECT_0: exit;
MY_WAIT_TIMEOUT: exit;
И при компиляции на MY_WAIT_TIMEOUT выдает 365 ошибку, что требьуется константа.
Добавлено: 06 июн 2005, 16:26
Eugie
UUU, у тебя MY_WAIT_TIMEOUT - типизированная константа (:integer), а в case требуются истинные константы, т.е. просто const MY_WAIT_TIMEOUT = <значение>.
Вообще, паскалевская терминология в отношении констант приводит к путанице: то, что в Delphi/Pascal называется типизированная константа, на самом деле правильно называть статическая переменная

Добавлено: 06 июн 2005, 16:39
UUU
Значит я очень старым стал, что объясняю плохо. мне значенеи надо менять в проге. Динамически.
если у меня const MY_WAIT_TIMEOUT = <значение>.
, то как я ей поменяю значение? в ходе выполненяи проги? например повесив на онклик?
Добавлено: 06 июн 2005, 17:18
Eugie
Объясняешь и вправду неважно

Ну откажись тогда от case'ов, пользуйся if-then - там в условии может стоять что угодно.
Добавлено: 06 июн 2005, 21:49
UUU
Тогда возникает встречный вопрос: почему используют сасе вместо иф-то. Быстродействие?.
А вопрос остается в силе 9постевлен сначала): как мне изменить значение константы внутри выполняемой проги.
куда может быть яснее поставнока вопроса.
Добавлено: 07 июн 2005, 08:10
LAngel
Case в списке значений оперирует только с истинными константами, они превращаются в значение ещё на стадии компиляции. Так что во время работы программы исправить их почти невозможно, если не копаться в коде в памяти.