Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Клуб программистов > Обсуждение статей
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.08.2010, 20:40   #571
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию

Цитата:
Сообщение от Beermonza Посмотреть сообщение
Юзер, которого нет в сети не может иметь иконку, он не подключен к серверу, его нет в списке пользователей, ...андерстенд?
Ясное дело, что если нет юзера, то нет и иконки
Допустим такая ситуация. Я открыл форму приватных сообщений и у меня в адресате ник юзера, который только что вышел, но я об этом не знаю и шлю ему сообщения. Как быть в этом случае, если вариант с offline юзерами отпал?

Последний раз редактировалось Shouldercannon; 24.08.2010 в 00:57.
Shouldercannon вне форума Ответить с цитированием
Старый 24.08.2010, 16:05   #572
Beermonza
Инженер ИС
Старожил
 
Аватар для Beermonza
 
Регистрация: 13.12.2006
Сообщений: 2,671
По умолчанию

Если в списке пользователей нет того, кто ранее прислал приват, стало быть его нет в сети, ...или список пользователей нужен только серверу?
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
Beermonza вне форума Ответить с цитированием
Старый 24.08.2010, 16:24   #573
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию

Уже доходит до смешного. Вообще можно реализовать Offline сообщения?
Shouldercannon вне форума Ответить с цитированием
Старый 24.08.2010, 16:45   #574
Beermonza
Инженер ИС
Старожил
 
Аватар для Beermonza
 
Регистрация: 13.12.2006
Сообщений: 2,671
По умолчанию

Цитата:
Сообщение от Shouldercannon Посмотреть сообщение
Уже доходит до смешного. Вообще можно реализовать Offline сообщения?
Ну, дык, смешным проблемам - смешное решение. Для Off-line нужен массив, файлы, и система обработки и записи, ...вспоминайте структуру ICQ, Qip, там есть каталог, все сообщения записываются в файлы, выводятся по открытию программы. Это может быть на сервере как основное, и у клиента как лог. Для вас будет сложно.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
Beermonza вне форума Ответить с цитированием
Старый 24.08.2010, 17:16   #575
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию

Цитата:
Сообщение от Beermonza Посмотреть сообщение
Ну, дык, смешным проблемам - смешное решение. Для Off-line нужен массив, файлы, и система обработки и записи, ...вспоминайте структуру ICQ, Qip, там есть каталог, все сообщения записываются в файлы, выводятся по открытию программы. Это может быть на сервере как основное, и у клиента как лог. Для вас будет сложно.
Понял. Вопросов больше по данной теме (offline сообщения) не имею

Юзеры умудряются равершать работу программы, что та в свою очеред не можнт послать на сервер событие Disconnect и из-за этого сервер ждёт пока все юзеры снова авторизуются для рассылки списка юзеров. Может на OnDestroy поставить событие ClientSocket.Active := False;

С ListView можно перед записью вывести несколько иконок?

Последний раз редактировалось Shouldercannon; 25.08.2010 в 15:35.
Shouldercannon вне форума Ответить с цитированием
Старый 25.08.2010, 17:57   #576
Beermonza
Инженер ИС
Старожил
 
Аватар для Beermonza
 
Регистрация: 13.12.2006
Сообщений: 2,671
По умолчанию

Закрытие клиента кнопкой Reset на системном блоке не исключена, как и завершение процесса с "Диспетчера задач". Это явление редкое, поэтому нужно настроить на опрос клиентов на авторизацию в событии сервера OnClientError, всех поголовно, и создать полный список пользователей, т.е. UpdMas := True;

Есть еще момент, вот обработка ошибок:

Код:
procedure TForm1.ClException(Sender: TObject; Error: Exception);
begin
  if (Error.ClassName = 'ESocketError') then
    begin
      // Снова пытаемся подключиться через таймер 1 раз в 5 секунд
      StatusBar1.Panels[1].Text := '';
      StatusBar1.Panels[2].Text := '[' + TimeToStr(Now) + '] Ожидание подключения к серверу...';
      UserListView.Clear;
      ConnectTimer.Enabled := True;
    end
    else
      Application.ShowException(Error); // Ошибки не сокета пусть показывает
end;
Обработка касается любых ошибок, и не только клиентского сокета. Надо бы внести изменения:

Код:
procedure TForm1.ClException(Sender: TObject; Error: Exception);
begin
  if (Error.ClassName = 'ESocketError') then
    begin
      If ClientBtn.Tag = 1 then
        Begin
          // Снова пытаемся подключиться через таймер 1 раз в 5 секунд
          StatusBar1.Panels[1].Text := '';
          StatusBar1.Panels[2].Text := '[' + TimeToStr(Now) + '] Ожидание подключения к серверу...';
          UserListView.Clear;
          ConnectTimer.Enabled := True;
        end;  
    end
    else
      Application.ShowException(Error); // Ошибки не сокета пусть показывает
end;
ListView не поддерживает несколько иконок. Можно сделать все варианты, рисунков не много.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его

Последний раз редактировалось Beermonza; 25.08.2010 в 18:00.
Beermonza вне форума Ответить с цитированием
Старый 26.08.2010, 22:07   #577
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию

Не совсем понял момент
Код:
begin
      If ClientBtn.Tag = 1 then
        Begin
что он даст?
Shouldercannon вне форума Ответить с цитированием
Старый 27.08.2010, 17:54   #578
Beermonza
Инженер ИС
Старожил
 
Аватар для Beermonza
 
Регистрация: 13.12.2006
Сообщений: 2,671
По умолчанию

Секция:
Код:
// Снова пытаемся подключиться через таймер 1 раз в 5 секунд
StatusBar1.Panels[1].Text := '';
StatusBar1.Panels[2].Text := '[' + TimeToStr(Now) + '] Ожидание подключения к серверу...';
UserListView.Clear;
ConnectTimer.Enabled := True;
...принадлежит только клиенту, а процедура подключена на перехват ошибок всего приложения, ...чтобы в режиме сервера не срабатывало автоподключение клиенткой части, нужно изолировать клиента по состоянию его кнопки. Если было нажато подключение, значит режим клиента, и только в этом режиме будет производиться поиск сервера. Если был создан сервер, то выше указанная секция никогда не должна выполняться, если произойдет ошибка сокета по приложению.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
Beermonza вне форума Ответить с цитированием
Старый 28.08.2010, 11:06   #579
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию

Цитата:
Сообщение от Beermonza Посмотреть сообщение
Секция:
Код:
// Снова пытаемся подключиться через таймер 1 раз в 5 секунд
StatusBar1.Panels[1].Text := '';
StatusBar1.Panels[2].Text := '[' + TimeToStr(Now) + '] Ожидание подключения к серверу...';
UserListView.Clear;
ConnectTimer.Enabled := True;
...принадлежит только клиенту, а процедура подключена на перехват ошибок всего приложения, ...чтобы в режиме сервера не срабатывало автоподключение клиенткой части, нужно изолировать клиента по состоянию его кнопки. Если было нажато подключение, значит режим клиента, и только в этом режиме будет производиться поиск сервера. Если был создан сервер, то выше указанная секция никогда не должна выполняться, если произойдет ошибка сокета по приложению.
Есть одно большое но, сервер и клиент у меня разделены на два приложения.
Shouldercannon вне форума Ответить с цитированием
Старый 28.08.2010, 19:33   #580
Beermonza
Инженер ИС
Старожил
 
Аватар для Beermonza
 
Регистрация: 13.12.2006
Сообщений: 2,671
По умолчанию

Процедура все равно нужна, а секция нет.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
Beermonza вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
обновление в блоге - Создание клиент-сервера Pblog Обсуждение статей 0 03.10.2007 17:12
обновление в блоге - Диплом. Создание и продвижение сайта - готовь сани летом, а дипл Pblog Обсуждение статей 0 31.08.2007 20:00
обновление в блоге - USB Холодильник Pblog Обсуждение статей 0 25.06.2007 14:13
обновление в блоге - О ярлыках Pblog Обсуждение статей 0 27.05.2007 03:17