![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| Andreyzpr |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 190 Регистрация: 4.2.2007 Где: Украина Репутация: нет Всего: 1 |
Введу в курс дела:
Я пишу чат. Список пользователей у меня выводиться в TreeView. Когда кто либо в чате начинает печатать текст, то возле его иконки в чате появляеться красная полосочка Все это делаеться таким путем: Когда ктото начинает печатать, его клиент посылает другим в чате команду, а те клиенты, которые получили, просто меняют иконку на другую - такую же как прежнюю только с красной полосочкой. Когда юзер перестает печатать, то клиент посылает команду об окончании набора текста, и остальные клиенты возвращают прежнюю иконку, естествено уже без той черточки. А проблема у меня такая Где то я сделал ошибку в коде, что раз на раз посылаеться команда о начале набора текста Вот код, касающиеся набора текста:
Гляньте ктото свежим глазом в чем ошибка, из за чего оно бывает протормаживает Ато знаете как, ошибка явная а я не вижу! |
|||
|
||||
| Sunvas |
|
|||
|
Соль и сахар ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3388 Регистрация: 12.3.2006 Где: Тосно Репутация: 28 Всего: 89 |
Не нравится мне этот кусок кода. ИМХО коряво как-то. Таймер у тебя на сколько заряжен? -------------------- Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их. |
|||
|
||||
| Andreyzpr |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 190 Регистрация: 4.2.2007 Где: Украина Репутация: нет Всего: 1 |
таймер заряжен на 1,5 секунлы Этож получаеться у каждого разная скорость печати Ктото в одну секунду вводит 5 букв - ктото одну тут же выходит что пока ты печатаешь клиент не отправит команду об окончании набора текста |
||||
|
|||||
| Sunvas |
|
||||
|
Соль и сахар ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3388 Регистрация: 12.3.2006 Где: Тосно Репутация: 28 Всего: 89 |
Ну вот тебе и ошибка. После прохода 1.5 секунды вызывается код:
Потом, пока человек печатает, благодаря тому, что PrintIndex=0, вызывается этот код:
-------------------- Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их. |
||||
|
|||||
| Andreyzpr |
|
||||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 190 Регистрация: 4.2.2007 Где: Украина Репутация: нет Всего: 1 |
Чето я ниче не понял Сматри для чего эта переменная: Когда пользователь начинает печатать - а именно набрал первый символ - переменная стала равна 1 запускаеться таймер, который при срабатывании отправит команду о завершении набора текста. Если Пользователь набирает второй символ, таймер, чтобы он не сработал - не отправил команду о завершении печати, отключаеться. Дальше идет проверка. Если эта переменная равна еденице - то уже не нужно отправлять команду о том что я набираю текст - она уже отправлена. После идет активация таймера - если пользователь закончит печатать через 1,5 секунды таймер подаст соответствующую команду. Ввел пользователь третюю букву. Смотрим - Деактивируем таймер - опять же, чтобы он не отправил команду о завершении набора текста! Дальше проверяем - если мы уже отправляли команду о начале набора - тогда молча запускаем обратно таймер. Прошло 1,5 секунды, запущеный таймер сработал. При срабатывании он переменную поставил в значение НОЛЬ, отправил команду о том что я закончил печатать. Вдруг я решил еще точку поставить - короче говоря набрал исче один символ. Смотрим код: Если переменная равна нулю ТОГДА мы ОТПРАВЛЯЕМ команду о наборе текста и опять активируем таймер! Тоесть этот код позволяет как можно меньше отправлять команд на сервер! ----- Поэтому мы переменную ставим в ноль! Я не литератор, могу не очь внятно объясниь, если чет непонятно спрашуй |
||||||
|
|||||||
| Sunvas |
|
|||
|
Соль и сахар ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3388 Регистрация: 12.3.2006 Где: Тосно Репутация: 28 Всего: 89 |
Возможно я че-то не понял. Что означает "раз на раз"? -------------------- Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их. |
|||
|
||||
| Andreyzpr |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 190 Регистрация: 4.2.2007 Где: Украина Репутация: нет Всего: 1 |
Ну вот например Запустил чат Начинаешь печатать текст - а уведомления о наборе текста в чате нету. Ждещь 1,5 секунды и продолжаешь печатать - появилось Непонятно из за чего такой глюк - где я допустил ошибку! |
||||
|
|||||
| Sunvas |
|
|||
|
Соль и сахар ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3388 Регистрация: 12.3.2006 Где: Тосно Репутация: 28 Всего: 89 |
По твоему алгоритму вроде бы все правильно. Но попробуй для начала определить что именно глючит: отправка текста или твой алгоритм. Выводи состояния печати текста куда-нить в лабел и смотри что происходит.
-------------------- Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их. |
|||
|
||||
| Andreyzpr |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 190 Регистрация: 4.2.2007 Где: Украина Репутация: нет Всего: 1 |
В лабеле работает! Значит проблема в изменении иконки, чтоли!!!!! А что там та такого? |
|||
|
||||
| Sunvas |
|
|||
|
Соль и сахар ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3388 Регистрация: 12.3.2006 Где: Тосно Репутация: 28 Всего: 89 |
-------------------- Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их. |
|||
|
||||
| Andreyzpr |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 190 Регистрация: 4.2.2007 Где: Украина Репутация: нет Всего: 1 |
||||
|
||||
| Sunvas |
|
|||
|
Соль и сахар ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3388 Регистрация: 12.3.2006 Где: Тосно Репутация: 28 Всего: 89 |
-------------------- Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их. |
|||
|
||||
| Andreyzpr |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 190 Регистрация: 4.2.2007 Где: Украина Репутация: нет Всего: 1 |
http://forum.vingrad.ru/forum/topic-154457...y1153383/0.html Первый пост - пример кода! |
|||
|
||||
| Sunvas |
|
|||
|
Соль и сахар ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3388 Регистрация: 12.3.2006 Где: Тосно Репутация: 28 Всего: 89 |
Andreyzpr, в первом куске лишь хорошо описан лишь код получения состояния печатает/не печатает.
А вот сама отправка сообщения, его получение и изменения иконки - очень урезаны. -------------------- Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их. |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |