Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 19.02.2011, 18:02
KamiMAN KamiMAN вне форума
Прохожий
 
Регистрация: 19.02.2011
Сообщения: 8
Репутация: 10
По умолчанию UDP в Delphi

Всем привет. Сегодня я впервые попробовал работать в Delphi, и получилось сделать только "Hello world!" в консоли Так вот, зачем я в delphi полез то... Мне нужно создать udp чат, но поскольку я ничего не понимаю в delphi то он у меня чет не получается... Кто может подсказать какую литературу читать именно на эту тему, потому что другие мне пока ненужны.
И еще вопросик: Реально ли создать такую вот прожку на делфи - Запускаешь эксешник, вводишь логин и пас (привязка к базам данных mssql или mysql), и все, пишешь в поле что нужно, а потом это высвечивается в самом чате... И еще парочка ньюансов, во первых хочется внедрить авы о_О тоесть в чате есть к примеру ~50 стандартных ав, и среди них пользователь выбирает любую, потом когда он пишет все видят его ник и аву, ну как на форуме =) А так же как то осуществить комнаты, но что бы они не занимали место в самом окне чата, тоесть к примеру войти в личную комнату так "open room 1", ну или что то в этом роде.
Заранее спасибо.
Ответить с цитированием
  #2  
Старый 19.02.2011, 19:10
iGeTT iGeTT вне форума
Прохожий
 
Регистрация: 23.12.2010
Адрес: Moscow
Сообщения: 38
Версия Delphi: 7 Lite
Репутация: 10
По умолчанию

Вот про мускуль.
Советую для начала поглазеть примеры Delphi (Pascal) насчет работы с сетью и отправки-приема сообщений. Потом реализовать базовый функционал, а после уже "наращивать" функционал (те же аватары, смайлики, аккаунты, комнаты...)
Ответить с цитированием
  #3  
Старый 20.02.2011, 07:31
KamiMAN KamiMAN вне форума
Прохожий
 
Регистрация: 19.02.2011
Сообщения: 8
Репутация: 10
По умолчанию

Ну, я в общем то так и хотел, просто надо было узнать, что точно читать. Спасибо
Ответить с цитированием
  #4  
Старый 20.02.2011, 17:13
KamiMAN KamiMAN вне форума
Прохожий
 
Регистрация: 19.02.2011
Сообщения: 8
Репутация: 10
По умолчанию

Заранее извиняюсь за глупый вопрос, но есть небольшая проблемка, которую я в упор непонимаю... Что тут нетак? Embarcadero вовсю ругается на мой код. Пробую написать чат из этой статьи.
Код HTML:
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs; type TForm1 = class(TForm) Edit1: TEdit; Memo1: TMemo; Button1: TButton; Button2: TButton; SpinEdit1: TSpinEdit; ServerSocket1: TServerSocket; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Edit1KeyPress(Sender: TObject; var Key: Char); procedure ServerSocket1ClientRead(Sender: TObject; Socket: TCustomWinSocket); procedure ServerSocket1ClientDisconnect(Sender: TObject; Socket: TCustomWinSocket); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin ServerSocket1.Port:=SpinEdit1.Value; ServerSocket1.Active:=True; end; procedure TForm1.Button2Click(Sender: TObject); begin ServerSocket1.Active:=False; end; procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); var S: string; begin if Key = Chr(13) then begin Key:=Chr(0); S:=Edit1.Text; Edit1.Clear; ServerSocket1.Socket.Connections[0].SendText(S); Memo1.Lines.Add('< '+S); end; end; procedure TForm1.ServerSocket1ClientDisconnect(Sender: TObject; Socket: TCustomWinSocket); begin Memo1.Lines.Add('Клиент отсоединился'); end; procedure TForm1.ServerSocket1ClientRead(Sender: TObject; Socket: TCustomWinSocket); var Received: string; begin Received:=Socket.ReceiveText; Memo1.Lines.Add('> '+Received); end; end.

Извините, спойлер неполучается поставить...
Подскажите что в этом коде нетак? Embarcadero ругается чуть ли не в каждой строчке ошибка. Заранее спасибо...

P.S. Сохранил, все заработало, почему?

Последний раз редактировалось KamiMAN, 20.02.2011 в 17:17.
Ответить с цитированием
  #5  
Старый 21.02.2011, 06:13
KamiMAN KamiMAN вне форума
Прохожий
 
Регистрация: 19.02.2011
Сообщения: 8
Репутация: 10
По умолчанию

Со всем разобрался, теперь новые вопросы.
1) Как сделать автологин к серверу? Сейчас для конекта к серву, нужно указать порт и IP надо сделать автологин просто нажав кнопку "Войти"
2) Как организовать ники? Сейчас есть только 2 вида сообщений, от серва и от клиента, они обозначаются ">" и "<", Нужно что бы было к примеру так "Вам написал KamiMAN" И "Вы написали". Ну или посто ник, а там уже понятно кто куда пишет..
3) Как дизайн проге написать? Чуть позже скринами с пояснениями дополню =)
Сейчас так.

Нужно убрать полоски вокруг поля где сообщения появляются

Должно получиться как выше о_О

Последний раз редактировалось KamiMAN, 21.02.2011 в 07:14.
Ответить с цитированием
  #6  
Старый 21.02.2011, 09:53
iGeTT iGeTT вне форума
Прохожий
 
Регистрация: 23.12.2010
Адрес: Moscow
Сообщения: 38
Версия Delphi: 7 Lite
Репутация: 10
По умолчанию

1. IP статич.? Если да, то размести статично сервер и укажи ип и порт у компонента при старте клиента.
2. Хочешь ЛС или просто ники в чате? Как вариант - кинуть еще один Edit и отправлять сообщения вида:
Код:
S:=Edit*Ник*.Text + ': ' + Edit*Текст*.Text
Или же создать БД с аккаунтами, регистрацией, авторизацией и прочими прелестями.
3. А почему все черное? о_О А вообще для дизайна есть AlphaControls

Последний раз редактировалось iGeTT, 21.02.2011 в 10:05.
Ответить с цитированием
  #7  
Старый 21.02.2011, 12:02
KamiMAN KamiMAN вне форума
Прохожий
 
Регистрация: 19.02.2011
Сообщения: 8
Репутация: 10
По умолчанию

Черное надо, на будущее планируется ввести авы, и привязку аков с помощью mysql о_О Айпи статичный, но я нупь, и незнаю как автологин сделать, что бы просто жамк войти, и он сразу готовый айпи и порт у себя авторизует.
Ответить с цитированием
  #8  
Старый 21.02.2011, 12:33
iGeTT iGeTT вне форума
Прохожий
 
Регистрация: 23.12.2010
Адрес: Moscow
Сообщения: 38
Версия Delphi: 7 Lite
Репутация: 10
По умолчанию

В параметрах UDP компонента пропиши ип и порт. И убери считывание их с Edit'ов
Ответить с цитированием
  #9  
Старый 22.02.2011, 10:46
KamiMAN KamiMAN вне форума
Прохожий
 
Регистрация: 19.02.2011
Сообщения: 8
Репутация: 10
По умолчанию

Вот свой залил. Сори что дамп

Люди вопрос появился, мой чат можно скачать чуть выше, и глянуть, что это чудо работает только в 2 стороны, сервер-клиент, если подключик несколько клиентов, сервер с каждым сможет общаться, все видят сообщения сервера, а сообщения клиентов видит только серв, клиенты друг друга не видят. Дык вот подскажите какой чат писать, что бы в чате могли сидеть человек 20, как в 1ой комнате, на чем писать(всмысле сокеты, udp, tcp) и т.д
Желательно еще ссылочку на гайд, ибо я всего 2 дня в делфи работал
Заранее спасибо.
Ответить с цитированием
  #10  
Старый 22.02.2011, 11:19
iGeTT iGeTT вне форума
Прохожий
 
Регистрация: 23.12.2010
Адрес: Moscow
Сообщения: 38
Версия Delphi: 7 Lite
Репутация: 10
По умолчанию

Скинь весь проект полностью, с .pas.
Код:
Unit1 in '..\..\..\Documents\RAD Studio\Projects\Сервер №2\Unit1.pas'
Ответить с цитированием
  #11  
Старый 22.02.2011, 14:14
KamiMAN KamiMAN вне форума
Прохожий
 
Регистрация: 19.02.2011
Сообщения: 8
Репутация: 10
По умолчанию

Cсылка на мой чат, мне подсказали что можно этот чат переделать не внося изменений в структуру(может я неправильно говорю), а в свойствах TServerSocket`a найти свойство, в его обработчик вписать такую штуку, что бы когда клиент шлет сообщение на сервер, его видят другие клиенты о_О как то так... У кого есть время, помогите опжалуйста в скайпе (kamimanmailru) или аське (564306030)
Ответить с цитированием
  #12  
Старый 27.02.2011, 07:54
KamiMAN KamiMAN вне форума
Прохожий
 
Регистрация: 19.02.2011
Сообщения: 8
Репутация: 10
По умолчанию

Всем привет, решил не мучаться с UDP и написал(переписал) чат на сокетах (знакомый исходники дал хорошие). Так вот...
Решил все вопросы, остался 1 достаточно важный, есть к примеру 5 картинок, которые нужно использовать как авы, есть код отправки ника сервер-клиент
Цитата:
Socket.SendText('#UC:'+Form2.Edit4. Text);

Если не ошибаюсь, так вот, мне посоветовали авы с помощью RadioGroup сделать... Ктонибудь подскажите более подробно? Есть Form2 который пока что содержит в себе поле для порта, IP, ника, и 3 кнопки сохранение, вход, выход... Туда же я хочу запихать выбор авы, в результате всего этого ава должна появляться над ником в сообщении... Еще все это чудо должно использовать Canvas. (Картинки будут лежать в папке с чатом)
Сейчас так:
[NikName]: Текст
а надо:
[TImage]
[NikName]: Текст

И еще вопросик. Сейчас отправка сообещния из Memo происходит при нажатии ентера, как сделать при нажатии ctrl+enter?
Цитата:
procedure TForm1.Memo2KeyPress(Sender: TObject; var Key: Char);
begin
if Key = #13 then begin
Key := #0;
Button4.Click;
end;
end;

Как то так, заранее спасибо...

Последний раз редактировалось KamiMAN, 27.02.2011 в 07:59.
Ответить с цитированием
  #13  
Старый 27.02.2011, 09:01
iGeTT iGeTT вне форума
Прохожий
 
Регистрация: 23.12.2010
Адрес: Moscow
Сообщения: 38
Версия Delphi: 7 Lite
Репутация: 10
По умолчанию

Можно например поместить картини в директорию с программой и отправлять только номер, например отдельным сообщением.
А насчет ctrl+enter - можно при считывании
Код:
if Key = #17 then proverka:=true;
if proverka = true and Key = #13 then Button4.Click;
__________________
"Никаких сиплюсплюс тут у меня!" (с)
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 22:19.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025