多台分机给主机发送数据
发送的数据格式为:  分机的IP地址+简单的数据(比如一个整数)主机按接收到的循序分别建立一个对应的数据
如:A[N]=ip地址   B[N]=数据10.0.0.1       A[1]    B[1]
10.0.0.222     A[2]    B[2]
10.0.0.123     A[3]    B[3] 
10.0.0.55      A[4]    B[4]
10.0.0.9       A[5]    B[5]
........各台机器多次发送后都在各自的变量上累加,有什么简单的方法,(不希望通过A B 的循环比较,可以建立其它的辅助数据)?

解决方案 »

  1.   

    再述一遍吧
    就是把每台分机发送过来的数据在服务器上累加到自己的变量上原型为:
    分机1在处理事务 向发送器发送IP+工作进度
    分机2在处理事务 向发送器发送IP+工作进度
    ....
    服务器接收分机的数据
    为每一个用户建立进度条实际上就是把每台分机的进度条集中显示在服务器上
      

  2.   


      PListItem = ^TListItem;
      TListItem = record
        nCount: Integer;
        nOther: Integer;
      end;function TForm1.AddItem(sIP: string; nCount: Integer): Boolean;
    var
      nIndex: Integer;
      temObj: PListItem;
    begin
      nIndex := FList.IndexOf(sIP);
      if nIndex <> -1 then
      begin
        PListItem(FList.Objects[nIndex])^.nCount := PListItem(FList.Objects[nIndex])^.nCount + nCount;
      end else
      begin
        New(temObj);
        temObj^.nCount := nCount;
        FList.AddObject(sIP, Pointer(temObj));
      end;
    end;procedure TForm1.Button1Click(Sender: TObject);
    begin
      AddItem('192.168.0.9', 5);
    end;
    看看行不行
      

  3.   

    FList: TStringList;New(temObj);//申请的内存记得释放  
      

  4.   

    验证了一下:8楼的方法可行,正是我需要的,但是觉得数据简单
    希望改为
    function TForm1.AddItem(sIP: string; nCount: Integer): Boolean;
    var
      nIndex: Integer;
    begin
      nIndex := FList.IndexOf(sIP);
      if nIndex <> -1 then
      begin
     ***   PListItem(FList.Objects[nIndex])^.nCount := PListItem(FList.Objects[nIndex])^.nCount + nCount;
      end else
      begin
        FList.AddObject(sIP, Pointer(nCount));
      end;
    end;
    可以吗?***句如何修改
      

  5.   

    哦  原来想不要那个结构啊
    function TForm1.AddItem(sIP: string; nCount: Integer): Boolean;
    var
      nIndex: Integer;
      TemInt: PInteger;
    begin
      nIndex := FList.IndexOf(sIP);
      if nIndex <> -1 then
      begin
        PInteger(FList.Objects[nIndex])^ := PInteger(FList.Objects[nIndex])^ + nCount;
      end else
      begin
        New(TemInt);
        TemInt^ := nCount;
        FList.AddObject(sIP, Pointer(TemInt));
      end;
    end;差不多 原理一样  哥们 学一下指针什么的