Wait_Timeout и сокеты

Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду

UUU
Сообщения: 310
Зарегистрирован: 17 фев 2004, 09:27
Откуда: Иваново
Контактная информация:

В общем, компонента использует стандартные виндовые сокеты и работает через них.
Встал вопрос увеличить (изменять) время установления связи при обрыве соединения.
Посмотрев компоненты, предположил, что в настоящий момент данный тайм аут заложен в константе WAIT_TIMEOUT и составляет 282.
Но изменить программно не получается это значение.
Ни через move, ни через @, ни чере-з absolute. Все хочет работать с переменными, а это константа.

Можно компоненту переделать под работу с другим именем. но оно тоже должно быть константой. При этом указание
const My_TimeOut : word - WAIT_ TIMEOUT;
также не проходит как изменяемая константа :-(.
Аватара пользователя
LAngel
Сообщения: 277
Зарегистрирован: 30 мар 2005, 08:19
Откуда: Ульяновск
Контактная информация:

А если посмотреть исходник компоненты, где она этот таймаут использует и вписать туда переменную?
С уважением, Lost Angel...
UUU
Сообщения: 310
Зарегистрирован: 17 фев 2004, 09:27
Откуда: Иваново
Контактная информация:

ПРобовал, там это имя используется еще и в case и еще в некоторых обращениях, куда только константа может идти :-(
Аватара пользователя
LAngel
Сообщения: 277
Зарегистрирован: 30 мар 2005, 08:19
Откуда: Ульяновск
Контактная информация:

дык подправь :)
С уважением, Lost Angel...
UUU
Сообщения: 310
Зарегистрирован: 17 фев 2004, 09:27
Откуда: Иваново
Контактная информация:

Делаю:

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 ошибку, что требьуется константа.
Eugie
Сообщения: 708
Зарегистрирован: 17 фев 2004, 23:59
Откуда: SPb

UUU, у тебя MY_WAIT_TIMEOUT - типизированная константа (:integer), а в case требуются истинные константы, т.е. просто const MY_WAIT_TIMEOUT = <значение>.

Вообще, паскалевская терминология в отношении констант приводит к путанице: то, что в Delphi/Pascal называется типизированная константа, на самом деле правильно называть статическая переменная :)
UUU
Сообщения: 310
Зарегистрирован: 17 фев 2004, 09:27
Откуда: Иваново
Контактная информация:

Значит я очень старым стал, что объясняю плохо. мне значенеи надо менять в проге. Динамически.

если у меня const MY_WAIT_TIMEOUT = <значение>.
, то как я ей поменяю значение? в ходе выполненяи проги? например повесив на онклик?
Eugie
Сообщения: 708
Зарегистрирован: 17 фев 2004, 23:59
Откуда: SPb

Объясняешь и вправду неважно :)
Ну откажись тогда от case'ов, пользуйся if-then - там в условии может стоять что угодно.
UUU
Сообщения: 310
Зарегистрирован: 17 фев 2004, 09:27
Откуда: Иваново
Контактная информация:

Тогда возникает встречный вопрос: почему используют сасе вместо иф-то. Быстродействие?.
А вопрос остается в силе 9постевлен сначала): как мне изменить значение константы внутри выполняемой проги.
куда может быть яснее поставнока вопроса.
Аватара пользователя
LAngel
Сообщения: 277
Зарегистрирован: 30 мар 2005, 08:19
Откуда: Ульяновск
Контактная информация:

Case в списке значений оперирует только с истинными константами, они превращаются в значение ещё на стадии компиляции. Так что во время работы программы исправить их почти невозможно, если не копаться в коде в памяти.
С уважением, Lost Angel...
Ответить