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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.06.2010, 23:37   #461
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,899
По умолчанию

Не знаю у меня всё быстро происходит. Навожу курсор на нужную запись и тутже открывается меню в котором сразу выбираю действие.
Shouldercannon вне форума Ответить с цитированием
Старый 19.06.2010, 23:44   #462
Beermonza
Инженер ИС
Старожил
 
Аватар для Beermonza
 
Регистрация: 13.12.2006
Сообщений: 2,671
По умолчанию

Для интереса сделайте Label в сторонке и выведите в него UserListView.Selected.Index в событии на выбор пункта меню, будет ли совпадать с тем на котором вызывается меню.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
Beermonza вне форума Ответить с цитированием
Старый 19.06.2010, 23:50   #463
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,899
По умолчанию

Так
Код:
procedure TForm1.UserListViewSelectItem(Sender: TObject; Item: TListItem;
  Selected: Boolean);
begin
  Label1.Caption := PChar(UserListView.Selected.Index);
end;
ошибки сыпятся
Shouldercannon вне форума Ответить с цитированием
Старый 20.06.2010, 00:12   #464
Beermonza
Инженер ИС
Старожил
 
Аватар для Beermonza
 
Регистрация: 13.12.2006
Сообщений: 2,671
По умолчанию

Неправильное преобразование, Caption просит String тип:
Код:
Label1.Caption := IntToStr(UserListView.Selected.Index);
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
Beermonza вне форума Ответить с цитированием
Старый 20.06.2010, 00:28   #465
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,899
По умолчанию

Access violation at address и тому подобное, короче при выборе кого-либо из списка одни вот такие ошибки валятся. После ошибки Server = 0, первый юзер = 1, снова после ошибки второй = 2, эти цифры выводятся в Caption Label.
P.S. После перезапуска сервера после клика по первому юзеру всё норально, а дальше валятся ошибки.

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

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

Цитата:
Сообщение от Beermonza Посмотреть сообщение
Ищите по коду разные алгоритмы, от старых версий и новых, ...возможно просто не замечаете.
Можно код на пункт меню посмотреть?
Если вы имели ввиду под этим пунты выпадающего меню при выборе юзера.

Результаты эксеперементов

В списке были
Server - 127.0.0.1
Lennox - 77.234.224.154
Shouldercannon - 77.234.194.247

Далее выводил в ShowMessage IP выделенного юзера из списка
Server - List index out of bounds (-1) (не удивительно, что такая ошибка ведь ServerSocket.Socket.Connections[UserListView.Selected.Index - 1].RemoteAddress)
Lennox - 77.234.194.247
Shouldercannon - 77.234.224.154 (поменялись местами)

В данном случае IP правельно определяется если первым подключится Lennox, вторым Shouldercannon, если наоборот результат выше.

С ServerSocket.Socket.Connections[UserListView.Selected.Index].RemoteAddress не лучше
Server - 77.234.224.154
Lennox - 77.234.194.247
Shouldercannon - List index out of bounds (2)

Вот так индекс определяется верно без ошибок, но в событии UserListViewSelectItem просто жесть
Код:
procedure TForm1.est1Click(Sender: TObject);
begin
  ShowMessage(IntToStr(UserListView.Selected.Index));
end;
Может и здесь цикл применить, подобный данному
Код:
                      // Создаем цикл поиска забаненого пользователя
                      for i3 := 0 to ServerSocket.Socket.ActiveConnections - 1 do
                        begin
                          // Если пользователь найден
                          if UserMas[i3 + 1].Name = BannedUnbannedNick then
                            begin
Вложения
Тип файла: txt Code.txt (7.2 Кб, 142 просмотров)

Последний раз редактировалось Shouldercannon; 20.06.2010 в 20:59.
Shouldercannon вне форума Ответить с цитированием
Старый 21.06.2010, 19:24   #468
Beermonza
Инженер ИС
Старожил
 
Аватар для Beermonza
 
Регистрация: 13.12.2006
Сообщений: 2,671
По умолчанию

Все ошибки из-за исчезновения выделения при работе со списком и другими объектами. Лучше использовать содержимое того же поля привата, которое уже показывает ник выделенного в списке пользователя, и, да, примените поиск этого имени в массиве UserMas, в данном случае BannedUnbannedNick будет равен PrivateEdit.Text, плюс нужно исключение на значение "Всем", или обработка для бана/разбана всем пользователям, если нужно.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
Beermonza вне форума Ответить с цитированием
Старый 21.06.2010, 19:59   #469
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,899
По умолчанию

Тоесть ник выделенного передать в переменную, далее сделать проверку по UserMas и при совпадении отослать в канал команду. Возникает вопрос: как узнать IP найденного юзера для занесения в лог файл?

Последний раз редактировалось Shouldercannon; 21.06.2010 в 20:52.
Shouldercannon вне форума Ответить с цитированием
Старый 21.06.2010, 22:50   #470
Beermonza
Инженер ИС
Старожил
 
Аватар для Beermonza
 
Регистрация: 13.12.2006
Сообщений: 2,671
По умолчанию

Поиск простой. Вот так будет для сервера:
Код:
For j2 := 1 to ServerSocket.Socket.ActiveConnections do
  Begin
    If UserMas[j2].Name = BannedUnbannedNick then
      Begin
        // какие-то процедуры
        ...

        // IP пользователя
        BannedIP := ServerSocket.Socket.Connections[j2 - 1].RemoteAddress;
        // отправка команды на бан
        ServerSocket.Socket.Connections[j2 - 1].SendText('21');
      end;
  end;
Проверяйте.
Руководитель проекта 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