删除,添加,编辑stringList

时间:2012-11-15 09:54:19

标签: delphi delphi-xe2

这有点令人困惑,但会尽力解释。请询问您是否需要更多详细信息。

首先,我有一个名为TPlayers的课程,如此......

TPlayers = class
   Private
      p : array[1..20] of TStringList;
      function GetPlayer(i:integer): TStringList;

    Public
      Property player[i : integer] : TStringList read GetPlayer;

           constructor Create;   virtual;
    implementation

    uses
    main;
    {constructor}
       constructor TPlayers.Create;
       begin
         p[1] := TStringList.Create;
         p[2] := TStringList.Create;
         p[3] := TStringList.Create;
         p[4] := TStringList.Create;
         p[5] := TStringList.Create;
         p[6] := TStringList.Create;
       end;

     function TPlayers.GetPlayer(i: integer): TStringList;
    begin
      Result := p[i];
    end;

我现在有FTherePlayers := TPlayers.Create来创建课程。 我第一次像这样添加到stringlist

FTherePlayers.Player[strtoint(name2)].Add('posx='+inttostr(posL.x));

或取出变量

FTherePlayers.Player[1].Add('posx=15');

这似乎很好,但接下来我尝试更新它

FTherePlayers.Player[strtoint(ID)].Values['posx='] := xpos;

或取出变量

FTherePlayers.Player[1].Values['posx='] := 12; 

然后我在更改后检查该值,它仍然显示15,因此当我做

showmessage(fthereplayers.player[1].Values['posx']);

它返回15但它应该是12.知道它为什么不改变? 谢谢 格伦

1 个答案:

答案 0 :(得分:5)

Values属性的Name索引值末尾有一个额外的等号。您只需要使用名称值对的名称部分而不使用等号。因此,在您的代码中只需替换以下行:

// here is an extra equals sign in 'posx=' index value
FTherePlayers.Player[1].Values['posx='] := 12;
FTherePlayers.Player[strtoint(ID)].Values['posx='] := xpos;

用这个:

FTherePlayers.Player[1].Values['posx'] := 12; 
FTherePlayers.Player[strtoint(ID)].Values['posx'] := xpos;