![]() |
|
#1
|
|||
|
|||
![]() Здраствуйте.Почитал несколько статей по delphi и решали написать чат клиент<>сервер.
Ошибка возникла когда я попытался отправить сообщение серверу. Сервер ничего не выдает когда в клиенте я нажимаю на кнопку отправить.Но соединение он логирует. Вот исходные коды.Может кто подскажет. Сервер PHP код:
Клиент PHP код:
|
#2
|
|||
|
|||
![]() В сервере исправь свой код:
Код:
procedure TForm1.ServerSocket1Read(Sender: TObject; Socket: TCustomWinSocket); var a: String; i:=integer; begin for i:=0 to serversocket1.Socket.ActiveConnections-1 do a := 'Клиент ' + InTtoStr(Socket.SocketHandle) + 'написал >' + ServerSocket1.Socket.Connections[i].ReceiveTextt; ListBox1.Items.Add(a); end; end. Вот и всё. Последний раз редактировалось Admin, 11.06.2010 в 20:40. |
#3
|
|||
|
|||
![]() Неа.Все равно не хочет.
Вот когда нажимаю "Подключиться" он подключается и сервер выдает что такой то такой то подключился, но при наборе текста и при нажатии на кнопку "отправить" сервер не выдает никаких действий |
#4
|
|||
|
|||
![]() Короче вот мой юин: 477064023 помогу
|
#5
|
||||
|
||||
![]() Сделал сервер с помощью ServerSocket, на который отправляется текстовая строка вида
Код:
500 12.01 из этой строки мне нужно приравнять IAS = 500 tNext = 12.01 Код:
procedure Tf_main.ServerSocket1ClientRead(Sender: TObject; Socket: TCustomWinSocket); var i,text_len, probel :integer; IAS: real; text : widestring; x,y,z,r : double; X_string,Y_string,Z_string, R_string,tNext,IAS_string: string; begin text_len := length(Socket.ReceiveText);//получаем длину всей строки text := (Socket.ReceiveText); //сама строка for i := 0 to text_len do if text[i] = ' ' then probel := i; //ищем где находится пробел IAS := strtofloat(copy (text,0,probel - 1)); //IAS = всё что до пробела tNext := (copy (text,probel + 1,text_len)); //tNext = всё что после пробела но при получении строки, вылазит ошибка в строке, выделенную красным. ![]() Если этот же алгоритм прогонять со строкой взятой из Edit`a то всё работает. В чём может быть проблема? Последний раз редактировалось Sevas, 01.09.2010 в 21:55. |
#6
|
|||
|
|||
![]() Во первых, судя по алгоритму, ты ищешь последний пробел в тексте? Непонятно зачем...
Во вторых, индексация символов в строках начинается с единицы. В третьих, функция Pos() решила бы проблему с поиском пробела, более адекватным способом) |
#7
|
||||
|
||||
![]() В строке 100% только один пробел, поэтому просто его ищу по строке.
с Pos попробую. |