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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.01.2013, 18:33   #721
Beermonza
Инженер ИС
Старожил
 
Аватар для Beermonza
 
Регистрация: 13.12.2006
Сообщений: 2,671
По умолчанию

У меня нет флага UpdDo, ...это возможно UpdMas. Моя структура управляется посредством запроса на обновление. Т.е. ты подаешь "заявку" флагом в любой удобный для тебя момент, а обновление данных массива и списка пользователей выполнится только в самом конце процедуры опроса, ...после того как все операции проделаны. Не рекомендую избавляться от флага.

Ты можешь не использовать ячейку 0. Но, стоит предусмотреть системные сообщения, которые должен рассылать сервер. Поэтому оставь как есть, но исключи возможность клиентов отправлять сообщения серверу и в списках не отображай его.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
Beermonza вне форума Ответить с цитированием
Старый 14.02.2013, 13:58   #722
Настя_Настя
 
Регистрация: 01.04.2012
Сообщений: 3
По умолчанию

Добрый день. Во-первых, огромное спасибо за подробное описание по разработке чата. А во-вторых, очень прошу у вас помощи. Помогите, пожалуйста, в данном чате реализовать смайлы. Я установила TRxRichEdit.. и RichView тоже установила. Но не получается у меня самостоятельно внедрить смайлы в данный проект.
Вложения
Тип файла: rar PROJECT-Chat.rar (830.8 Кб, 56 просмотров)
Настя_Настя вне форума Ответить с цитированием
Старый 07.03.2013, 13:42   #723
Настя_Настя
 
Регистрация: 01.04.2012
Сообщений: 3
По умолчанию

Со смайлами разобралась сама...
Я понимаю, что данный проект уже давнишнее дело для вас... Но, дорогой Beermonza, помогите, пожалуйста, решить следующую проблему:
В ранее выложенном PROJECT-Chat.rar есть toolbar1 и на нем toolButton'ы. Но все эти кнопки работают лишь для первой вкладки. Как сделать так, чтобы они срабатывали на текущую вкладку??? Например, очищали поле той вкладки, которая сейчас открыта, историю открытой вкладки сохраняли, а не вкладки общего чата.
//Вот код очистки
procedure TForm2.ToolButton1Click(Sender: TObject);
begin
ChatRichEdit.Clear;
end;
//Код сохранения переписки:
procedure TForm2.ToolButton10Click(Sender: TObject);
begin
if sd.Execute = true then
begin
ChatRichEdit.PlainText := True;
ChatRichEdit.lines.savetofile(sd.Fi leName +'.txt');
end;
end;
Настя_Настя вне форума Ответить с цитированием
Старый 07.03.2013, 23:39   #724
Beermonza
Инженер ИС
Старожил
 
Аватар для Beermonza
 
Регистрация: 13.12.2006
Сообщений: 2,671
По умолчанию

Настя_Настя, а Вы задайте вопрос в разделе "Общие вопросы Delphi", ...тема у Вас касательно VCL и наследования объектов.

Код:
procedure TForm2.ToolButton10Click(Sender: TObject);
begin
  if sd.Execute = true then
    begin
      ChatRichEdit.PlainText := True;
      ChatRichEdit.lines.savetofile(sd.Fi leName +'.txt');
    end;
end;
На кнопку ToolButton10 у Вас привязано именно одно поле в конкретной вкладке - ChatRichEdit. Если вкладки создаются динамически, то это сложно. Я бы поступил проще. Создал массив записей, в котором хранились бы все сообщения и системная информация на каждого пользователя. А т.к. массив - матрица, то перейти на канал пользователя можно по номеру ячейки (номеру канала пользователя). Информацию будет отображать одно и то же поле, а переключение по списку пользователей, без вкладок. Кнопки будут в условии проверять текущий номер пользователя и брать информацию из массива записей напрямую.

Сложно?
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
Beermonza вне форума Ответить с цитированием
Старый 14.03.2013, 15:40   #725
Настя_Настя
 
Регистрация: 01.04.2012
Сообщений: 3
По умолчанию

Цитата:
Сообщение от Beermonza Посмотреть сообщение
Настя_Настя, а Вы задайте вопрос в разделе "Общие вопросы Delphi", ...тема у Вас касательно VCL и наследования объектов.
...
На кнопку ToolButton10 у Вас привязано именно одно поле в конкретной вкладке - ChatRichEdit. Если вкладки создаются динамически, то это сложно. Я бы поступил проще. Создал массив записей, в котором хранились бы все сообщения и системная информация на каждого пользователя. А т.к. массив - матрица, то перейти на канал пользователя можно по номеру ячейки (номеру канала пользователя). Информацию будет отображать одно и то же поле, а переключение по списку пользователей, без вкладок. Кнопки будут в условии проверять текущий номер пользователя и брать информацию из массива записей напрямую.

Сложно?
Большое спасибо, Beermonza! Очень помогли! Теперь поняла, от чего "плясать" нужно.
Но у меня еще один вопрос возник. Не могу разобраться, откуда добавляется этот кусок во входящих сообщениях ( при переписки между клиентами). Помогите пожалуйста! Где в коде надо что-то убрать, поправить или изменить??? Никак не могу понять!
Изображения
Тип файла: jpg 1.jpg (41.6 Кб, 180 просмотров)
Настя_Настя вне форума Ответить с цитированием
Старый 18.03.2013, 01:31   #726
Beermonza
Инженер ИС
Старожил
 
Аватар для Beermonza
 
Регистрация: 13.12.2006
Сообщений: 2,671
По умолчанию

Цитата:
Сообщение от Настя_Настя Посмотреть сообщение
Где в коде надо что-то убрать, поправить или изменить??? Никак не могу понять!
Попробуйте искать по названию поля, в которое выводится текст. Отправка у вас нормальная, а тот кто отправляет при отображении в свое поле дублирует дату. Это не мой вариант, там может быть много чего, ...ищите команду Lines.Add.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
Beermonza вне форума Ответить с цитированием
Старый 08.08.2013, 16:20   #727
Dmitry_DM
 
Регистрация: 07.08.2012
Сообщений: 8
По умолчанию

Настя_Настя, а можешь выложить свой чат с исправленными ошибками и смайлами (очень интересно как ты их сделала)?
Dmitry_DM вне форума Ответить с цитированием
Старый 12.09.2013, 12:11   #728
5cek
Форумчанин
 
Регистрация: 04.07.2013
Сообщений: 118
По умолчанию

Здравствуйте, нашел ваш исходник, большое спасибо за него! Долго искал нечто подобное, вот только не как не могу разобраться, взял полностью ваш клиент-сервер, абсолютно не чего не меняя, и один закинул на сервер, а другой в несколько копий запускаю у себя на компьютере, в итоге что получается, порт на сервере который он слушает открытый это 100%, адрес стоит типа xxxx.ru айпи у сервера статический, их правда два, т.к. у сервера два интернета, один запасной на случай если первый отвалится. Так вот, у меня возникает проблемма, иногда ник клиента меняется, повторяя один и тот же ник типа - МойНик1МойНик, иногда клиенты отваливаются, и на сервере возникает ошибка - windows socket error удаленный хост принудительно отключился. В мемо на сервере иногда появляются сообщения клиент подключился, клиент отключился. При этом может возникнуть такое что сообщения могут не отсылаться вообще. А если все это проделать у себя на компьютере локально, то все работает как часы. А вот через интернет не хочет не как. Объясните пожалуйста где здесь могут быть камни? Пробовал уже и таймер сервера увеличивать и уменьшать все равно одно и тоже, правда при уменьшении таймера до 100мсек ошибки и повторы ников учащаются, а при увеличении например до 1000мсек некоторые сообщения не доходят, и в итоге часто клиенты отваливаются.
5cek вне форума Ответить с цитированием
Старый 13.09.2013, 07:20   #729
5cek
Форумчанин
 
Регистрация: 04.07.2013
Сообщений: 118
По умолчанию

Я примерно понял в чем проблема, из за задержки интернета от клиента может прийти два пакета в одном, надо разделять, только как легче можно разделить их?
5cek вне форума Ответить с цитированием
Старый 13.09.2013, 09:57   #730
5cek
Форумчанин
 
Регистрация: 04.07.2013
Сообщений: 118
По умолчанию

Решил проблему разделения, в конце каждого пакета добавляется символ - | при этом у пользователей стоит запрет на ввод этого символа, дальше в циклах разделяются сообщения если они вдруг оказались "склеенными". Проблема когда клиенты отваливались тоже решил, это была моя ошибка, у меня в программе IdTCPClient отсылал сообщения по этому же порту, не досмотрел), по этому возникал конфликт на сервере.
5cek вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 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