![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#191 | |
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
![]() Цитата:
Код:
Для этого нужен цикл по-j от 2 до len, в нем условие с вырезкой символа Copy(text,j,1), или text[j] (что равноценно, если вырезается один символ) и сравнением с ключом. В теле условия нужна текстовая переменная, которая наполняется проверенными символами, допустим TempName := TempName + text[j]; ...эта переменная до цикла должна быть обнулена. Как условие найдет ключ, нужно сбросить цикл, использовать break. Ник пользователя, приславшего пакет будет в переменной TempName. Итак, цикл сброшен, j хранит позицию на которой находится ключ. Достаточно прибавить к j единицу, и это - позиция с которой нужно начинать вырезать содержимое пакета до его конца len. Возможно потребуется коррекция, нужно смотреть не обрезает ли код конец, соответственно, добавлять к len константу (все зависит от ключа команды в начале пакета). Послесловие: ...я бы рекомендовал использовать в качестве ключа определения ника символ, который нельзя ввести с клавиатуры, это Chr(128), Chr(129), Chr(131) - Chr(138), Chr(140) - Chr(144), Chr(152) - Chr(154), Chr(156) - Chr(165), Chr(174) - Chr(182) и пр.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
Последний раз редактировалось Beermonza; 02.06.2009 в 16:29. |
|
![]() |
![]() |
![]() |
#192 |
Участник клуба Подтвердите свой е-майл
Регистрация: 26.01.2008
Сообщений: 1,899
|
![]()
Если я правильно понял, то ключ определения должен отсылаться в сообщении
Код:
|
![]() |
![]() |
![]() |
#193 |
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
![]()
Конечно, иначе никак это не сделать.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
|
![]() |
![]() |
![]() |
#194 | |
Участник клуба Подтвердите свой е-майл
Регистрация: 26.01.2008
Сообщений: 1,899
|
![]() Цитата:
команда отсыла сообщения будет выглядеть так Код:
скопирует значение начиная с первого Chr(154) (ник), скопируем значение со второго Chr(154) (текст сообщения) |
|
![]() |
![]() |
![]() |
#195 |
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
![]()
Все равно нужно перебирать байты.
Код:
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
|
![]() |
![]() |
![]() |
#196 |
Пользователь
Регистрация: 07.05.2009
Сообщений: 36
|
![]()
Вопрос по бан систему
Сама эта система бан сбоев не даст? И бывают ли одинаковые IP? Последний раз редактировалось mnbvcxz11; 14.06.2009 в 13:51. |
![]() |
![]() |
![]() |
#197 |
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
![]()
Сплошь и рядом один IP-адрес на подсеть в Интернете, и не возможно ошибиться или обойти бан в ЛВС.
Т.е. если мы баним в Интернете IP-адрес, то возможно, если там подсеть, то все остальные, пользующие этот чат, тоже не зайдут, такова реальность.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
|
![]() |
![]() |
![]() |
#198 |
Пользователь
Регистрация: 07.05.2009
Сообщений: 36
|
![]()
В этой программе возможно отправить файлы
хотя бы по локальной сети. Как это можно сделать? |
![]() |
![]() |
![]() |
#199 |
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
![]()
Эта программа задается основной целью: "передать текст". Если нужно передать файлы, пожалуйста, создавайте Stream и отправляйте любые файлы, хоть в ЛВС, хоть в Интернет. Как это делается найдете в разделе форума "Работа с сетью в Delphi".
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
|
![]() |
![]() |
![]() |
#200 |
Форумчанин
Регистрация: 04.06.2009
Сообщений: 351
|
![]()
Смотрел код отправки личных сообщений, как то все слишком накручено...
Я реализовал таким образом: 1. Если личное сообщение - ставлю код команды 4 и цепляю к нему НЕ НИК которому отсылаю сообщение, а его порядковый номер в списке пользователей (он одинаковый у всех пользователей и на сервере, ЭТОТ метод более правильный т.к. в списке может быть 2 и боле пользователей с одинаковым именем Вася, Коля и т.д.) 2. При разборе сообщения проверяю код, если 4 - отсылаю только в канал которому предназначено сообщение. Жду критики от автора... Вопрос автору: как реализовать отправку сообщения серверу при разсоединении клиента? При нажатии на кнопку реализовал таким способом: 1. отправляю сообщение серверу что клиент такой-то отключился 2. включаю таймер и жду 1 сек. 3. разрываю соединение но КАК ето осуществить непосредственно в процедуре "Dicconnect" клиента ума не приложу... Когда пишу в процедуре "Dicconnect" отправку сообщения оно не успевает уйти т.к. (я так понимаю) что процедура отключения происходит быстрее чем уходит сообщение, подскажите, как реализовать?
Мне разрешено открывать только одну страницу - about :blank. Сперва было скучно, но потом я втянулся. Теперь у меня там живет 2 виртуальных друга, и я слышу голоса из розетки!
Последний раз редактировалось spirit-ua; 16.06.2009 в 16:03. |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
обновление в блоге - Создание клиент-сервера | 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 |