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

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

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.12.2014, 00:44   #1
GrabbeR
Пользователь
 
Регистрация: 17.03.2010
Сообщений: 43
По умолчанию Client-Server Sockets Stringgrid

При получении инфы на сервер он перезаписывает ее в 1 строку таблицы, а нужно, чтобы в каждую следующую (динамически созданную) строку шла запись.
Посылаю:
Код:
procedure TForm1.Button3Click(Sender: TObject);
var
  r: Integer; s:string;
begin
  s:='';
  with StringGrid1 do begin
   for r := 0 to RowCount -2 do
    s:=s+Rows[r].CommaText+#13#10;
  end;
  ClientSocket1.Socket.SendText(s);
end;
Принимаю:
Код:
procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
  Socket: TCustomWinSocket);
var
  r: Integer;
  st : TStringList;
begin
  StringGrid1.RowCount := StringGrid1.RowCount + 1;
  st:=TStringList.Create;
  st.Text:=Socket.ReceiveText;
  with StringGrid1 do begin
   RowCount:=st.Count;
   for r := 1 to RowCount -1 do
    Rows[r].CommaText:=st[r];
  end;
  st.free;
end;
GrabbeR вне форума Ответить с цитированием
Старый 18.12.2014, 12:12   #2
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,882
По умолчанию

Код:
  StringGrid1.RowCount := StringGrid1.RowCount + 1;
  st:=TStringList.Create;
  st.Text:=Socket.ReceiveText;
  StringGrid1.ColCount:=st.Count; // я предполагаю, что так
  StringGrid1.Rows[StringGrid1.RowCount - 1].CommaText:=st[r];
  st.free;
Примерно так, если я верно понял. А вообще странно, как это Вы сами такой код написали, где одновременно таблица увеличивается на строку, а потом устанавливается вручную кол-во строк по ответу (из стринглиста).
Возможно, Вы перепутали, и надо не RowCount ставить, а ColCount ?
phomm вне форума Ответить с цитированием
Старый 18.12.2014, 17:30   #3
GrabbeR
Пользователь
 
Регистрация: 17.03.2010
Сообщений: 43
По умолчанию

Цитата:
Сообщение от phomm Посмотреть сообщение
Код:
  StringGrid1.RowCount := StringGrid1.RowCount + 1;
  st:=TStringList.Create;
  st.Text:=Socket.ReceiveText;
  StringGrid1.ColCount:=st.Count; // я предполагаю, что так
  StringGrid1.Rows[StringGrid1.RowCount - 1].CommaText:=st[r];
  st.free;
Да, но так передаются из всей таблицы только 0 и 1 столбец, остальные нет.
GrabbeR вне форума Ответить с цитированием
Старый 19.12.2014, 06:09   #4
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,882
По умолчанию

Код:
StringGrid1.Rows[StringGrid1.RowCount - 1].CommaText:=st[r];
Эта строчка калькирована с Вашей аналогичной строки (после ] я даже не смотрел на смысл и оставил это на Ваше усмотрение), возможно, правильней будет
Код:
StringGrid1.Rows[StringGrid1.RowCount - 1].Text := st;
но не ручаюсь.

Энивей, без проекта, я не могу дать 100% работающий код, а только мысль, как можно пойти, не решение, которое только скопипастить, голову тоже надо включать.

Вы бы, кстати, сперва сделали внесение данных в таблицу из статичного источника и отладили, ибо это проблема просто форматирования данных при отображении, а потом уж пробовали прицепить серверное получение данных.
phomm вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Winsock Client Server fucil Работа с сетью в Delphi 10 06.09.2012 00:37
Доработка Client-Server werrey Работа с сетью в Delphi 5 03.09.2011 20:51
[c++] Client-Server: GET request refused by the server Pumych Помощь студентам 2 22.08.2010 23:36
Windows Sockets / Сокеты / RAW Sockets bwwebm Работа с сетью в Delphi 4 23.04.2010 09:53
Client и Server Роман Радер Работа с сетью в Delphi 11 10.07.2008 15:24