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

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

Вернуться   Форум программистов > разработка игр, графический дизайн и моделирование > Gamedev - cоздание игр: Unity, OpenGL, DirectX
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.12.2010, 16:08   #11
Daemonghost
Пользователь
 
Аватар для Daemonghost
 
Регистрация: 25.11.2010
Сообщений: 46
По умолчанию

Цитата:
Сообщение от Beermonza Посмотреть сообщение
... Далее можно вытягивать из массива данные. Примените точку останова. В окне листинга, после компиляции, слева проставляются синие кружки - это обработанные строки. Если нажать на такой кружок, он станет красным, и вся строчка подсветится красным. Нужно запустить приложение, и когда программа дойдет до точки останова, она войдет в паузу. Нажимая F8 можно в ручном режиме переходить по строчкам. На какой строке возникнет ошибка, там и проблемы в коде. Нужно поставить точку останова вначале процедуры OnRead. Запустить соединение и после отправки пакета с сервера смотреть построчно что происходит, ...можно наводить курсор на код и смотреть текущие значения переменных.
спасибо за дельный совет на счет точек останова. я разобрался с причиной зависания ПК до применения точек. на счет заполнения массива на сервере, после приемки, я правильно написал вытягивание из массива данные?

Последний раз редактировалось Beermonza; 03.12.2010 в 18:50.
Daemonghost вне форума Ответить с цитированием
Старый 03.12.2010, 19:04   #12
Beermonza
Инженер ИС
Старожил
 
Аватар для Beermonza
 
Регистрация: 13.12.2006
Сообщений: 2,671
По умолчанию

Да, присвоение числовой переменной ячейки массива выполнено корректно. Необязательно если массив Byte типа, то и переменная, в которую записываются данные с ячеек должна быть так же Byte типа, ...нет, переменная может быть Integer, Word, Real, Double и тд., а вот обратное заполнение байтового массива с таких переменных будет некорректно, если они выходят за диапазон 0-255 или содержат плавающие запятые.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
Beermonza вне форума Ответить с цитированием
Старый 03.12.2010, 21:59   #13
Daemonghost
Пользователь
 
Аватар для Daemonghost
 
Регистрация: 25.11.2010
Сообщений: 46
По умолчанию

Огромная благодарность от меня! Буду пробовать... Если что, обращусь.
Daemonghost вне форума Ответить с цитированием
Старый 06.12.2010, 18:52   #14
Asker13
Форумчанин
 
Аватар для Asker13
 
Регистрация: 01.12.2010
Сообщений: 140
По умолчанию

Парочка вопросов: если я клиент, и я подключаюсь к серверу, то как получить номер соедиения, под которым я числюсь на сервере? То есть сервер обращается ко мне ServerSocket.Socket.Connections[мой_ID], а как клиенту при подключении получить собственный ID?;как определить, что клиент отключился от сервера? Скажем критическое завершение работы и событие OnClientDisconnect не срабатывает, я не получаю сообщения (в принципе у меня в программе при отсоединении клиента нормально и так не пишет, что клиент отсоединился).
Структура самого приложения проста: по таймеру сервер получает пакет данных, отправляет данные от одного клиента другим клиентам. Клиент в свою очередь принимает данные тоже по таймеру, отправляет данные по нажатию на кнопку на форме. Думал отправлять клиенту его ID (В программе есть массив клиентов, и чтобы клиент мог редактировать и отправлять свои данные ему нужно знать, под каким элементом в массиве он числется), когда сервер получит сообщение о подключении нового клиента, но не получилось это реализовать.

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

Читайте статью "Создание многопользовательского чата": http://pblog.ru/?p=100
Читайте все комментарии к статье, затем переходите в тему обсуждения: http://programmersforum.ru/showthread.php?t=12574 ...читайте от начала и до конца, там много всего, все проблемы и борьба с ними. Данный материал облегчит понимание и написание игрового сервера и клиента.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
Beermonza вне форума Ответить с цитированием
Старый 06.12.2010, 22:15   #16
Asker13
Форумчанин
 
Аватар для Asker13
 
Регистрация: 01.12.2010
Сообщений: 140
По умолчанию

Beermonza, спасибо.
Asker13 вне форума Ответить с цитированием
Старый 09.12.2010, 20:58   #17
Asker13
Форумчанин
 
Аватар для Asker13
 
Регистрация: 01.12.2010
Сообщений: 140
По умолчанию

Хм. Тестировали с другом сетевое приложение, никак не получается передать друг другу данные. Вроде он подключается, но вылезает сообщение List Index Out Of Bounds(1);. Плюс я не вижу, как он перемещается, и он не видит, как я перемещаюсь, хотя глядя в код думаешь, что должно всё работать, всё вроде правильно прописано. Посмотрите пожалуйста исходник, может кто обнаружит недочёт. Спасибо.
Вложения
Тип файла: rar NetGameTest.rar (3.3 Кб, 12 просмотров)
Asker13 вне форума Ответить с цитированием
Старый 09.12.2010, 22:00   #18
Beermonza
Инженер ИС
Старожил
 
Аватар для Beermonza
 
Регистрация: 13.12.2006
Сообщений: 2,671
По умолчанию

List Index Out Of Bounds(1) - отсутствие в списке записи под номером 1, ...скорее всего обращение должно быть по индексу 0.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
Beermonza вне форума Ответить с цитированием
Старый 09.12.2010, 22:08   #19
Asker13
Форумчанин
 
Аватар для Asker13
 
Регистрация: 01.12.2010
Сообщений: 140
По умолчанию

Я знаю, что так переводится, но в коде не нашёл места, где выходит за пределы обращение к элементу, к сожалению...
Asker13 вне форума Ответить с цитированием
Старый 10.12.2010, 13:29   #20
MonoLife
Пользователь
 
Регистрация: 23.04.2009
Сообщений: 53
По умолчанию

Цитата:
Я знаю, что так переводится, но в коде не нашёл места, где выходит за пределы обращение к элементу, к сожалению...
Я в подробности не вдавался, не компилировал, но мест у тебя в листинге, где могла бы быть ошибка не мало.
типа такого, например
Код:
i := 1;
 if PlayerCount <> MAX_PLAYERS then begin
 Inc(PlayerCount);
  while ClientData[i].Active do Inc(i)...
А что говорит отладка? Брейкопоинты ставил?
замечанице:
Код:
if iniFile.ReadInteger('MAIN', 'Server', 0) = 1 then IsServer := true
  else IsServer := false;
Почему нельзя было сделать булевую переменную?
тогда можно было б написать
Код:
IsServer := iniFile.ReadBool('MAIN', 'Server', False);
MonoLife вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Разработка приложений для Windows Mobile 6.1 AlexBonel Windows 4 08.10.2009 17:44
Разработка приложений под Windows Mobile 6.1 AlexBonel Помощь студентам 0 05.10.2009 10:40
C++ взаимодействие с АЦП/ЦАП и разработка сетевых приложений iukash Свободное общение 4 14.08.2009 18:02
Создание сетевых приложений в delphi martinenko Работа с сетью в Delphi 6 09.05.2009 20:23