Client-server Sockets Stringgrid

Тема в разделе "Delphi - Сети", создана пользователем GrabbeR, 15 дек 2014.

  1. GrabbeR

    GrabbeR New Member

    Регистрация:
    26 мар 2012
    Сообщения:
    4
    Симпатии:
    0
    Наставьте на путь истинный. Пытаюсь отправить содержимое одной строки на сервер, чтобы тот принял и вставил данные в таком же виде (столбцы). Получилось, но данные отправляются в 1 строку таблицы и при повторной отправке перезаписываются в той же строке.
    Хочу сделать, чтобы при получении данных они вставлялись в новую строку (динамически созданную) - подскажите примером.

    Отправляю на сервер:
    Код (Delphi):
    procedure TForm1.Button1Click(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;
    Принимаю:
    Код (Delphi):
    procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
    Socket: TCustomWinSocket);
    var
    st : TStringList;
    r: Integer;
    begin
    st:=TStringList.Create;
    st.Text:=Socket.ReceiveText;
    with StringGrid1 do begin
    RowCount:=st.Count;
    for r := 0 to RowCount -1 do
    Rows[r].CommaText:=st[r];
    end;
    StringGrid1.RowCount := 5;
    st.free;
    end;
     
  2. sinkopa

    sinkopa Well-Known Member

    Регистрация:
    17 июн 2009
    Сообщения:
    344
    Симпатии:
    9
    отправляем
    Код (Delphi):
    procedure TForm1.Button1Click(Sender: TObject);
    begin
    // отправить строки
    SendRows(1,5,True);
    end;


    procedure TForm1.SendRows(ARowFrom,          // с какой строки грида
    ARowTo: Integer;            // по какую (включительно)
    AppendRows: Boolean); // добавлять или перезаписывать
    var
    S: string;
    R: Integer;
    begin
    // добавили комманду (в первой "лишней" строке)
    if AppendRows then    // True - добавлять в конец грида
    S := '<append>'#13#10
    else                    // False - перезаписать грид
    S := '<replace>'#13#10;

    with StringGrid1 do begin
    for R := ARowFrom to ARowTo do
    S := S + Rows[R].CommaText+#13#10;
    end;

    ClientSocket1.Socket.SendText(S);
    end;
    принимаем
    Код (Delphi):
    procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
    Socket: TCustomWinSocket);
    var
    st : TStringList;
    i,R : Integer;
    command: string;
    begin
    st := TStringList.Create;
    st.Text := Socket.ReceiveText; // получили данные

    command := st[0]; // прочитали комманду в первой "лишней" строке
    st.Delete(0);    // удалили "лишнюю" строку с командой

    if (command = '<append>') then begin
    R := StringGrid1.RowCount;    // с какой строки грида будем вставлять
    StringGrid1.RowCount := StringGrid1.RowCount + st.Count; // "растянуть" грид
    end
    else if (command = '<replace>') then begin
    R := 0;
    StringGrid1.RowCount := st.Count;
    end
    else begin
    ShowMessage('неизветная команда "'+command+'"');
    Exit;
    end;

    with StringGrid1 do
    for i := 0 to st.Count-1 do begin
    Rows[R].CommaText := st[i];
    Inc(R);
    end;

    st.free;
    end;
    както так <_<
     
Загрузка...
Похожие Темы - Client server Sockets
  1. Shouldercannon
    Ответов:
    0
    Просмотров:
    488
  2. Ruslan280
    Ответов:
    28
    Просмотров:
    1.597
  3. Akram
    Ответов:
    1
    Просмотров:
    1.136
  4. rinsk
    Ответов:
    5
    Просмотров:
    1.705
  5. RixPvl

    Upd Client

    RixPvl, 31 авг 2013, в разделе: Java
    Ответов:
    0
    Просмотров:
    1.068

Поделиться этой страницей