Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Сети > Разбивка пакета


Автор: W1zArD 29.1.2006, 06:40
=( ну вот: Клиент:
Код
procedure TForm1.Button1Click(Sender: TObject);
var s:string;
begin
ClientSocket1.Active:=true;
s:=edit1.Text+'±'+edit2.Text+'¦'+edit3.Text+'¬'+edit4.Text;
ClientSocket1.Socket.SendText(FormatFloat('00#',1)+s);
end;


Сервер:
Код
procedure TForm1.ReadCommands(data:string);
var cmd,j,i,k:integer;
data1,data2,data3,data4:string;
begin
cmd:=StrToIntDef(Copy(data,1,3),-1);
data:=Copy(data,4,length(data));
j:=pos('±',data);
i:=pos('¦',data);
k:=pos('¬',data2);
data1:=copy(data,1,j-1);
data2:=copy(data,j+1,length(data)-j);
data3:=copy(data,i+1,length(data)+1-k);
data4:=copy(data,k+1,length(data));
if cmd=1 thenEdit1.Text:=data1;
Edit2.Text:=data2;
Edit3.Text:=data3;
Edit4.Text:=data4;
end;

procedure TForm1.ServerSocket1ClientRead(Sender: TObject;Socket: TCustomWinSocket);
begin
ReadCommands(Socket.ReceiveText)
end;


ПОМОГИТЕ!!!
суть ошибки в том что она не фиксит все переменные: к примеру data1,data2 работает в data3 находятся data3+data4, а в data4 весь пакет!
Народ срочно надо...

Либо функ-я которая передаёт как можно больше значений в 1-м пакете, а сервак их корректно читал

Автор: Snowy 29.1.2006, 10:45
Код

  j:=pos('±',data);
  i:=pos('¦',data);
  k:=pos('¬',data);
  data1:=copy(data,1,j-1);
  data2:=copy(data,j+1,i-j-1);
  data3:=copy(data,i+1,k-i-1);
  data4:=copy(data,k+1,length(data)-k);

Ты просто нарезаешь неправильно.
Плюс еще и опечатка:
Цитата(W1zArD @ 29.1.2006, 06:40 Найти цитируемый пост)
k:=pos('¬',data2);


Автор: W1zArD 30.1.2006, 06:01
попробуем...

Автор: W1zArD 31.1.2006, 04:33
я уже сделал =)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)