Wait_Timeout и сокеты
Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду
В общем, компонента использует стандартные виндовые сокеты и работает через них.
Встал вопрос увеличить (изменять) время установления связи при обрыве соединения.
Посмотрев компоненты, предположил, что в настоящий момент данный тайм аут заложен в константе WAIT_TIMEOUT и составляет 282.
Но изменить программно не получается это значение.
Ни через move, ни через @, ни чере-з absolute. Все хочет работать с переменными, а это константа.
Можно компоненту переделать под работу с другим именем. но оно тоже должно быть константой. При этом указание
const My_TimeOut : word - WAIT_ TIMEOUT;
также не проходит как изменяемая константа :-(.
Встал вопрос увеличить (изменять) время установления связи при обрыве соединения.
Посмотрев компоненты, предположил, что в настоящий момент данный тайм аут заложен в константе WAIT_TIMEOUT и составляет 282.
Но изменить программно не получается это значение.
Ни через move, ни через @, ни чере-з absolute. Все хочет работать с переменными, а это константа.
Можно компоненту переделать под работу с другим именем. но оно тоже должно быть константой. При этом указание
const My_TimeOut : word - WAIT_ TIMEOUT;
также не проходит как изменяемая константа :-(.
А если посмотреть исходник компоненты, где она этот таймаут использует и вписать туда переменную?
С уважением, Lost Angel...
ПРобовал, там это имя используется еще и в case и еще в некоторых обращениях, куда только константа может идти :-(
дык подправь 

С уважением, Lost Angel...
Делаю:
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 ошибку, что требьуется константа.
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 ошибку, что требьуется константа.
UUU, у тебя MY_WAIT_TIMEOUT - типизированная константа (:integer), а в case требуются истинные константы, т.е. просто const MY_WAIT_TIMEOUT = <значение>.
Вообще, паскалевская терминология в отношении констант приводит к путанице: то, что в Delphi/Pascal называется типизированная константа, на самом деле правильно называть статическая переменная
Вообще, паскалевская терминология в отношении констант приводит к путанице: то, что в Delphi/Pascal называется типизированная константа, на самом деле правильно называть статическая переменная

Значит я очень старым стал, что объясняю плохо. мне значенеи надо менять в проге. Динамически.
если у меня const MY_WAIT_TIMEOUT = <значение>.
, то как я ей поменяю значение? в ходе выполненяи проги? например повесив на онклик?
если у меня const MY_WAIT_TIMEOUT = <значение>.
, то как я ей поменяю значение? в ходе выполненяи проги? например повесив на онклик?
Объясняешь и вправду неважно 
Ну откажись тогда от case'ов, пользуйся if-then - там в условии может стоять что угодно.

Ну откажись тогда от case'ов, пользуйся if-then - там в условии может стоять что угодно.
Тогда возникает встречный вопрос: почему используют сасе вместо иф-то. Быстродействие?.
А вопрос остается в силе 9постевлен сначала): как мне изменить значение константы внутри выполняемой проги.
куда может быть яснее поставнока вопроса.
А вопрос остается в силе 9постевлен сначала): как мне изменить значение константы внутри выполняемой проги.
куда может быть яснее поставнока вопроса.
Case в списке значений оперирует только с истинными константами, они превращаются в значение ещё на стадии компиляции. Так что во время работы программы исправить их почти невозможно, если не копаться в коде в памяти.
С уважением, Lost Angel...