これは少し紛らわしいですが、説明するために最善を尽くします。詳細が必要な場合はお尋ねください。
TPlayers
まず、 Like so..というクラスがあります。
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
次に、クラスを作成する必要があります。初めてそのように文字列リストに追加します
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 である必要があります。なぜ変更されないのでしょうか? ありがとうグレン